2 回答

TA貢獻1775條經(jīng)驗 獲得超11個贊
strlen(char *)
作用:檢測字符串實際長度。
如:char s[]="1234567";
int a=strlen(s);//a=7
實際上strlen(char *)檢測的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符數(shù)。
又如:
char f[]="123456\01111";
int b=strlen(f);//b=6,因為遇到了'\0'
擴展資料
strlen(char*)函數(shù)求的是字符串的實際長度,它求得方法是從開始到遇到第一個'\0',如果你只定義沒有給它賦初值,這個結(jié)果是不定的,它會從aa首地址一直找下去,直到遇到'\0'停止。
⒈sizeof操作符的結(jié)果類型是size_t,它在頭文件中typedef為unsigned int類型。
該類型保證能容納實現(xiàn)所建立的最大對象的字節(jié)大小。
⒉sizeof是取字節(jié)運算符(關(guān)鍵字),strlen是函數(shù)。
⒊sizeof可以用類型做參數(shù),strlen只能用char*做參數(shù),且必須是以'\0'結(jié)尾的。
⒋數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針了。
⒌大部分編譯程序 在編譯的時候就把sizeof計算過了是類型或是變量的長度。這就是sizeof(x)可以用來定義數(shù)組維數(shù)的原因

TA貢獻1811條經(jīng)驗 獲得超4個贊
strlen(char *)
作用:檢測字符串實際長度。
如:char s[]="1234567";
int a=strlen(s);//a=7
實際上strlen(char *)檢測的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符數(shù)。
又如:
char f[]="123456\01111";
int b=strlen(f);//b=6,因為遇到了'\0'
char h[4]={'f','0',0,'h'} ;//注:不能寫成char h[4]="f0\0h";因為以""括起來的為字符串,它隱式的以'\0'結(jié)尾,而'\0'也占一個字節(jié),所以應(yīng)寫為char h[5]="f0\0h"
int c=strlen(h);//c=2,因為遇到了'\0'(注意'0'不等于'\0',而0等于'\0')
擴展資料:
strlen所作的僅僅是一個計數(shù)器的工作,它從內(nèi)存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內(nèi)存區(qū)域)開始掃描,直到碰到第一個字符串結(jié)束符'\0'為止,然后返回計數(shù)器值(長度不包含'\0')。
區(qū)別sizeof:
strlen(char*)函數(shù)求的是字符串的實際長度,它求得方法是從開始到遇到第一個'\0',如果你只定義沒有給它賦初值,這個結(jié)果是不定的,它會從aa首地址一直找下去,直到遇到'\0'停止。
⒈sizeof操作符的結(jié)果類型是size_t,它在頭文件中typedef為unsigned int類型。
該類型保證能容納實現(xiàn)所建立的最大對象的字節(jié)大小。
⒉sizeof是取字節(jié)運算符(關(guān)鍵字),strlen是函數(shù)。
⒊sizeof可以用類型做參數(shù),strlen只能用char*做參數(shù),且必須是以'\0'結(jié)尾的。
⒋數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針了。
⒌大部分編譯程序 在編譯的時候就把sizeof計算過了是類型或是變量的長度。這就是sizeof(x)可以用來定義數(shù)組維數(shù)的原因
6.strlen的結(jié)果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型占內(nèi)存的大小。
7.sizeof后如果是類型必須加括弧,如果是變量名可以不加括弧。這是因為sizeof是個操作符不是個函數(shù)。
⒏當(dāng)適用了于一個結(jié)構(gòu)類型時或變量, sizeof 返回實際的大小,
當(dāng)適用一靜態(tài)地空間數(shù)組, sizeof 歸還全部數(shù)組的尺寸。
sizeof 操作符不能返回動態(tài)地被分派了的數(shù)組或外部的數(shù)組的尺寸
⒐數(shù)組作為參數(shù)傳給函數(shù)時傳的是指針而不是數(shù)組,傳遞的是數(shù)組的首地址,
在C++里參數(shù)傳遞數(shù)組永遠都是傳遞指向數(shù)組首元素的指針,編譯器不知道數(shù)組的大小
如果想在函數(shù)內(nèi)知道數(shù)組的大小, 需要這樣做:
進入函數(shù)后用memcpy拷貝出來,長度由另一個形參傳進去
添加回答
舉報