C語(yǔ)言獲取數(shù)組長(zhǎng)度的幾種方法
如何通過(guò)編程的手段獲取某個(gè)數(shù)組的長(zhǎng)度呢?
答案是使用關(guān)鍵字 sizeof。
前面說(shuō)過(guò),用 sizeof 可以獲得數(shù)據(jù)類(lèi)型或變量在內(nèi)存中所占的字節(jié)數(shù)。同樣,用 sizeof 也可以獲得整個(gè)數(shù)組在內(nèi)存中所占的字節(jié)數(shù)。因?yàn)閿?shù)組中每個(gè)元素的類(lèi)型都是一樣的,在內(nèi)存中所占的字節(jié)數(shù)都是相同的,所以總的字節(jié)數(shù)除以一個(gè)元素所占的字節(jié)數(shù)就是數(shù)組的長(zhǎng)度。
那么如何用 sizeof 獲得數(shù)組總的字節(jié)數(shù)呢?只要對(duì)數(shù)組名使用 sizeof,求出的就是該數(shù)組總的字節(jié)數(shù)。下面寫(xiě)一個(gè)程序看一下:
# 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 型的,每個(gè)元素占 4 字節(jié),所以長(zhǎng)度為 10 的數(shù)組在內(nèi)存中所占的字節(jié)數(shù)就是 40。而總的字節(jié)數(shù)除以一個(gè)元素所占的字節(jié)數(shù)就是數(shù)組的長(zhǎng)度,如下面這個(gè)程序:
# 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]) 都能自動(dòng)求出數(shù)組的長(zhǎng)度。需要注意的是,它求出的是數(shù)組的總長(zhǎng)度,而不是數(shù)組中存放的有意義的數(shù)據(jù)的個(gè)數(shù)。比如定義一個(gè)int型的數(shù)組:
int a[10] = {1, 2, 3, 4, 5};
我們只初始化了五個(gè)元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。換句話(huà)說(shuō),我們無(wú)法通過(guò) sizeof(a)/sizeof(a[0]) 求出數(shù)組中有多少個(gè)有意義的數(shù)據(jù)。
使用庫(kù)函數(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語(yǔ)言獲取數(shù)組長(zhǎng)度的幾種方法的文章就介紹到這了,更多相關(guān)C語(yǔ)言獲取數(shù)組長(zhǎng)度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++哈希表之閉散列方法的模擬實(shí)現(xiàn)詳解
閉散列指(開(kāi)放定址法)發(fā)生沖突時(shí),如果哈希表沒(méi)有被填滿(mǎn),則表內(nèi)一定還有其他空閑位置,可以把沖突值放到下一個(gè)沒(méi)有被占用的空余位置上。本文將模擬實(shí)現(xiàn)閉散列方法,需要的可以參考一下2022-11-11
C++利用靜態(tài)成員或類(lèi)模板構(gòu)建鏈表的方法講解
這篇文章主要介紹了C++利用靜態(tài)成員或類(lèi)模板構(gòu)建鏈表的方法講解,鏈表是基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),而在C++中構(gòu)件單鏈表還是稍顯復(fù)雜,需要的朋友可以參考下2016-04-04
C語(yǔ)言開(kāi)發(fā)之歸并排序詳解及實(shí)例
這篇文章主要介紹了 C語(yǔ)言開(kāi)發(fā)之歸并排序詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-03-03

