C語言獲取數(shù)組長度的幾種方法
如何通過編程的手段獲取某個數(shù)組的長度呢?
答案是使用關(guān)鍵字 sizeof。
前面說過,用 sizeof 可以獲得數(shù)據(jù)類型或變量在內(nèi)存中所占的字節(jié)數(shù)。同樣,用 sizeof 也可以獲得整個數(shù)組在內(nèi)存中所占的字節(jié)數(shù)。因?yàn)閿?shù)組中每個元素的類型都是一樣的,在內(nèi)存中所占的字節(jié)數(shù)都是相同的,所以總的字節(jié)數(shù)除以一個元素所占的字節(jié)數(shù)就是數(shù)組的長度。
那么如何用 sizeof 獲得數(shù)組總的字節(jié)數(shù)呢?只要對數(shù)組名使用 sizeof,求出的就是該數(shù)組總的字節(jié)數(shù)。下面寫一個程序看一下:
# include <stdio.h> int main(void) { int a[10] = {0}; printf("sizeof(a) = %d\n", sizeof(a)); return 0; }
輸出結(jié)果是:
sizeof(a) = 40
數(shù)組 a 是 int 型的,每個元素占 4 字節(jié),所以長度為 10 的數(shù)組在內(nèi)存中所占的字節(jié)數(shù)就是 40。而總的字節(jié)數(shù)除以一個元素所占的字節(jié)數(shù)就是數(shù)組的長度,如下面這個程序:
# include <stdio.h> int main(void) { int a[10] = {0}; int cnt = sizeof(a) / sizeof(a[0]); printf("cnt = %d\n", cnt); return 0; }
輸出結(jié)果是:
cnt = 10
這樣不管數(shù)組是增加還是減少元素,sizeof(a)/sizeof(a[0]) 都能自動求出數(shù)組的長度。需要注意的是,它求出的是數(shù)組的總長度,而不是數(shù)組中存放的有意義的數(shù)據(jù)的個數(shù)。比如定義一個int型的數(shù)組:
int a[10] = {1, 2, 3, 4, 5};
我們只初始化了五個元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。換句話說,我們無法通過 sizeof(a)/sizeof(a[0]) 求出數(shù)組中有多少個有意義的數(shù)據(jù)。
使用庫函數(shù)strlen
lenght = strlen(str);
這種方法只適用于字符串?dāng)?shù)組
使用while循環(huán)遍歷計(jì)數(shù)
int i=0; while(str[i++] != '\0');
這種方法適用于計(jì)算數(shù)組中實(shí)際元素多少
到此這篇關(guān)于C語言獲取數(shù)組長度的幾種方法的文章就介紹到這了,更多相關(guān)C語言獲取數(shù)組長度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 將數(shù)據(jù)轉(zhuǎn)為字符串的幾種方法
這篇文章主要介紹了C++ 將數(shù)據(jù)轉(zhuǎn)為字符串的幾種方法,十分的實(shí)用,有需要的小伙伴可以參考下。2015-06-06C++實(shí)現(xiàn)不能被繼承的類實(shí)例分析
這篇文章主要介紹了C++實(shí)現(xiàn)不能被繼承的類實(shí)例分析,對于C++初學(xué)者而言可以通過本文實(shí)例更好的理解類的原理及運(yùn)用,需要的朋友可以參考下2014-08-08C語言算法練習(xí)之?dāng)?shù)組求素?cái)?shù)
這篇文章主要為大家介紹了C語言算法練習(xí)中數(shù)組求素?cái)?shù)的實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下2022-09-09QT布局管理詳解QVBoxLayout與QHBoxLayout及QGridLayout的使用
在這篇文章中,你將知道水平布局、垂直布局、網(wǎng)格布局如何輕松上手,以純代碼方式展示。對齊方式,大小設(shè)置,圖片頭像匹配標(biāo)簽,布局器里面的組件大小隨意切換大小,認(rèn)真看完這篇文章,QT布局管理器熟練使用2022-06-06C++?STL標(biāo)準(zhǔn)庫之std::list使用介紹及用法詳解
std::list是支持常數(shù)時間從容器任何位置插入和移除元素的容器,下面這篇文章主要給大家介紹了關(guān)于C++?STL標(biāo)準(zhǔn)庫之std::list使用介紹及用法詳解的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10