1.sizeof函數(shù)
sizeof函數(shù)返回表達(dá)式所占的內(nèi)存空間(以字節(jié)為單位)
例:
#include<stdio.h>
#define MONTHES 12
int main(void)
{
int days[MONTHES] = {31,28,31,30,30,30};
int len = sizeof(days)/days[0];
printf("days:%d",len);
return 0;
}
這段程序輸出的結(jié)果為:days:48
因?yàn)橐粋€(gè)int型在內(nèi)存中占4個(gè)字節(jié),而days數(shù)組有12個(gè)元素,故共48字節(jié)
另外若想求此數(shù)組長(zhǎng)度,可用如下語(yǔ)句:
int len = sizeof(days) / sizeof(days[0]);
```
/*sizeof(days)是整個(gè)數(shù)組所占的字節(jié)數(shù),sizeof(days)時(shí)數(shù)組中一個(gè)元素所占的字節(jié)數(shù)*/
2.strlen函數(shù)
此函數(shù)包含在string.h頭文件中。返回字符串的長(zhǎng)度 ,而非在內(nèi)存中的字節(jié)數(shù), 以"\0"為結(jié)束判斷,且'\0'不算入總數(shù)。
3.sizeof和strlen比較
strlen只計(jì)算字符串的長(zhǎng)度,且'\0'不計(jì)算在內(nèi)。而sizeof可計(jì)算各種數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù)。
且sizeof在計(jì)算字符串長(zhǎng)度時(shí)(char類型在內(nèi)存中只占一個(gè)字節(jié),
故用sizeof函數(shù)計(jì)算字符串時(shí)相當(dāng)于計(jì)算其長(zhǎng)度),'\0'計(jì)算在內(nèi)