C語言獲取數組長度的幾種方法

如何通過編程的手段獲取某個數組的長度呢?

答案是使用關鍵字 sizeof。

前面說過,用 sizeof 可以獲得數據類型或變量在內存中所占的字節數。同樣,用 sizeof 也可以獲得整個數組在內存中所占的字節數。因為數組中每個元素的類型都是一樣的,在內存中所占的字節數都是相同的,所以總的字節數除以一個元素所占的字節數就是數組的長度。

那麼如何用 sizeof 獲得數組總的字節數呢?隻要對數組名使用 sizeof,求出的就是該數組總的字節數。下面寫一個程序看一下:

# include <stdio.h>
int main(void)
{  
  int a[10] = {0};
  printf("sizeof(a) = %d\n", 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 = %d\n", 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++] != '\0');

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

到此這篇關於C語言獲取數組長度的幾種方法的文章就介紹到這瞭,更多相關C語言獲取數組長度內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: