首頁 > 軟體

C語言獲取陣列長度的幾種方法

2021-01-29 12:01:33

如何通過程式設計的手段獲取某個陣列的長度呢?

答案是使用關鍵字 sizeof。

前面說過,用 sizeof 可以獲得資料型別或變數在記憶體中所佔的位元組數。同樣,用 sizeof 也可以獲得整個陣列在記憶體中所佔的位元組數。因為陣列中每個元素的型別都是一樣的,在記憶體中所佔的位元組數都是相同的,所以總的位元組數除以一個元素所佔的位元組數就是陣列的長度。

那麼如何用 sizeof 獲得陣列總的位元組數呢?只要對陣列名使用 sizeof,求出的就是該陣列總的位元組數。下面寫一個程式看一下:

# include <stdio.h>
int main(void)
{  
  int a[10] = {0};
  printf("sizeof(a) = %dn", sizeof(a));
  return 0;
}

輸出結果是:
sizeof(a) = 40

陣列 a 是 int 型的,每個元素佔 4 位元組,所以長度為 10 的陣列在記憶體中所佔的位元組數就是 40。而總的位元組數除以一個元素所佔的位元組數就是陣列的長度,如下面這個程式:

# include <stdio.h>
int main(void)
{  
  int a[10] = {0};
  int cnt = sizeof(a) / sizeof(a[0]);
  printf("cnt = %dn", cnt);
  return 0;
}

輸出結果是:
cnt = 10

這樣不管陣列是增加還是減少元素,sizeof(a)/sizeof(a[0]) 都能自動求出陣列的長度。需要注意的是,它求出的是陣列的總長度,而不是陣列中存放的有意義的資料的個數。比如定義一個int型的陣列:

int a[10] = {1, 2, 3, 4, 5};

我們只初始化了五個元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。換句話說,我們無法通過 sizeof(a)/sizeof(a[0]) 求出陣列中有多少個有意義的資料。

使用庫函數strlen

lenght = strlen(str); 

這種方法只適用於字串陣列

使用while迴圈遍歷計數

int i=0;
while(str[i++] != '');

這種方法適用於計算陣列中實際元素多少

到此這篇關於C語言獲取陣列長度的幾種方法的文章就介紹到這了,更多相關C語言獲取陣列長度內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com