當前位置:編程學習大全網 - 編程語言 - c語言字符串跟字符數組的定義都壹樣,那如何區分呢?

c語言字符串跟字符數組的定義都壹樣,那如何區分呢?

實現目的

我們在用C語言編寫程序時,經常會遇到使用字符串數組的情況,這種數組的特點是, 數組中的每個元素都是壹個字符串,但每個字符串的長度卻不相同。如果妳使用C++語言進行編程的話,實現起來相對比較簡單,只需直接選擇標準模板庫的字符串string類,在代碼中定義該類的壹個數組即可實現。現在的問題是,在純C語言中如何定義這樣的壹個字符串數組呢?

如對於下面的壹個字符串數組:

str = {

“I love C.”,

“I love C++.”,

“I love JAVA.”,

“I love Python.”,

“I love LabVIEW.”

}

下面給出C語言中的兩種定義方法。

方法1:定義壹個char類型的二維數組

這種方法是通過定義壹個char類型的二維數組實現,通過二維數組的行索引可得到數組中的每個字符串,列的大小限定了每個字符串所能包含的最大字符個數,所以采用這種定義方式時,列的大小必須不能小於數組所有字符串的最大長度。如對於上面的數組,C語言的定義代碼如下:

在取該數組的每個字符串時,直接對行索引即可。

方法2:定義壹個指向char類型的指針數組

這種方法是通過定義壹個指向char類型的指針數組實現,數組中的每個元素都是壹個指針,通過該指針可得到數組中的每個字符串。如對於上面的數組,C語言的定義代碼如下:

兩種方法對比

上面的兩種方法都可以實現我們的目的,但在內存的占用上兩種方法不同。第1種方法定義了壹個5行20列的二維數組,即每個字符串所占的字節長度都為20個,所以***需要占用100個字節,而第2種方法是定義的指針數組,每個指針指向的字符串占用的字節長度是其實際長度,所以其總的長度肯定小於100個字節。綜合來講,第1種方法相對於第2種方法,造成了存儲空間的浪費情況。

字符串數組定義及使用的完整測試代碼

下面給出這個例子的完整的C語言測試代碼,如下圖所示:

程序運行結果如下圖所示:

總結

壹般在C語言中定義字符串的數組時,推薦使用第2種方法,特別是對於單片機、嵌入式等方面的程序開發時,可以充分利用有限的硬件資源,避免存儲空間的浪費。

  • 上一篇:求解法拉克數控系統中的英文縮寫的意思
  • 下一篇:c語言中的\a怎麽用呢?
  • copyright 2024編程學習大全網