strlen 用于計(jì)算字符串的長(zhǎng)度。
創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為近1000家服務(wù),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)!
數(shù)組長(zhǎng)度,應(yīng)是指數(shù)組大小,可存放幾個(gè)數(shù)組元素。
下面例子 計(jì)算 float 數(shù)組a, char 數(shù)組s 的 數(shù)組長(zhǎng)度,計(jì)算s 里字符串長(zhǎng)度。
(sizeof 用來(lái)計(jì)算 變量 和 類型 占內(nèi)存的大小,單位是字節(jié)。)
#include stdio.h
int main(){
float a[5];
char s[20]="abc123";
int nf,ns,ms;
nf = sizeof(a)/sizeof(float);
ns = sizeof(s)/sizeof(char);
ms = strlen(s);
printf("number of element in a is %d\n", nf);
printf("number of element in s is %d\n", ns);
printf("s string length is %d\n",ms);
return 0;
}
輸出:
number of element in a is 5
number of element in s is 20
s string length is 6
用 sizeof 可以獲得數(shù)據(jù)類型或變量在內(nèi)存中所占的字節(jié)數(shù)。同樣,用 sizeof 也可以獲得整個(gè)數(shù)組在內(nèi)存中所占的字節(jié)數(shù)。因?yàn)閿?shù)組中每個(gè)元素的類型都是一樣的,在內(nèi)存中所占的字節(jié)數(shù)都是相同的,所以總的字節(jié)數(shù)除以一個(gè)元素所占的字節(jié)數(shù)就是數(shù)組的長(zhǎng)度。
比較特別的是,比特右移()運(yùn)算符可以是算術(shù)(左端補(bǔ)最高有效位)或是邏輯(左端補(bǔ)0)位移。例如,將11100011右移3比特,算術(shù)右移后成為11111100,邏輯右移則為00011100。
運(yùn)算符的優(yōu)先級(jí)從高到低大致是:?jiǎn)文窟\(yùn)算符、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、賦值運(yùn)算符(=)和逗號(hào)運(yùn)算符。
C語(yǔ)言特點(diǎn):
其一,廣泛性。C語(yǔ)言的運(yùn)算范圍的大小直接決定了其優(yōu)劣性。C語(yǔ)言中包含了34種運(yùn)算符,因此運(yùn)算范圍要超出許多其它語(yǔ)言,此外其運(yùn)算結(jié)果的表達(dá)形式也十分豐富。
其二,簡(jiǎn)潔性。9類控制語(yǔ)句和32個(gè)關(guān)鍵字是C語(yǔ)言所具有的基礎(chǔ)特性,使得其在計(jì)算機(jī)應(yīng)用程序編寫(xiě)中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同時(shí)還能夠支持高級(jí)編程,避免了語(yǔ)言切換的繁瑣。
1、c語(yǔ)言中,定義數(shù)組后可以用sizeof命令獲得數(shù)組的長(zhǎng)度(可容納元素個(gè)數(shù))。
例如:
double a[] = {1,2,3,4};
int length;
length=sizeof(a)/sizeof(a[0]); //數(shù)組占內(nèi)存總空間,除以單個(gè)元素占內(nèi)存空間大小
printf(“l(fā)ength of a=%d”, length ); //輸出length of a=4
2、但是,通過(guò)傳遞數(shù)組名參數(shù)到子函數(shù)中,以獲得數(shù)組長(zhǎng)度是不可行的。
例如:
int getLength(int a[]){
int length;
length=sizeof(a)/sizeof(a[0]); //這樣是錯(cuò)誤的,得到的結(jié)果永遠(yuǎn)是1
return length;
}
因?yàn)?,a是函數(shù)參數(shù),到了本函數(shù)中,a只是一個(gè)指針(地址,系統(tǒng)在本函數(shù)運(yùn)行時(shí),是不知道a所表示的地址有多大的數(shù)據(jù)存儲(chǔ)空間,這里只是告訴函數(shù):一個(gè)數(shù)據(jù)存儲(chǔ)空間首地址),所以,sizoef(a)的結(jié)果是指針變量a占內(nèi)存的大小,一般在32位機(jī)上是4個(gè)字節(jié)。a[0]是int類型,sizeof(a[0])也是4個(gè)字節(jié),所以,結(jié)果永遠(yuǎn)是1。
3、因此,獲得數(shù)組長(zhǎng)度,只能在數(shù)組定義所在的代碼區(qū)中,采用以上方法,才可以達(dá)到效果