1樓:匿名使用者
sizeof計算物件的大小是轉換成物件型別的計算,也就是說,同種型別的不同物件其sizeof值都是一致的。
所以sizeof(str)相當於sizeof(char)=1另一個sizeof(str)相當於sizeof(char *),對於這種指標型別,在32位計算機中,一個指標變數的返回值通常是4(注意結果是以位元組為單位),在64位系統中指標變數的sizeof通常為8,所以當你的系統是64位時,sizeof(str)=sizeof(char *)=8如:
2樓:it圈新鮮事
sizeof是計算所佔用記憶體大小的函式,sizeof(str)表示的是一個指標的大小。
要想求字串長度要用strlen(str)。
3樓:維度科學
回答sizeof是求型別的大小,不管是表示式還是後面直接加型別;換種說法是在其後表示式在記憶體中佔用的位元組。
p是char *型別,當然是4位元組。
改為char p = "hello";
這就是後面字串的長度。
sizeof(p);求得是指標p的大小,不管你上面是任何型別,任何字串,都是4,因為指標的空間大小就是4;
char *p="hello";//改成char p="hello";
cout<
cout<
字串在儲存上類似字元陣列
它每一位單個元素都是能提取的,字串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入陣列。
通常以串的整體作為操作物件,如:在串中查詢某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字串相等的充要條件是:
長度相等,並且各個對應位置上的字元都相等。
設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的儲存方式是順序儲存方式和連結儲存方式。
更多10條
4樓:匿名使用者
不能,在c語言中,sizeof() 是一個判斷資料型別或者表示式長度的運算子。求字串長度用strlen()函式。
c語言中,sizeof和strlen都是表示字串長度的嗎?誰能告訴我它們兩者的區別~~
5樓:匿名使用者
sizeof 計算的是資料在記憶體中存放的長度,單位是「位元組」,可以對任何資料型別做運算,而且它是一個運算子(和+、-、*、\類似);當對字串計算時,包含末尾的"\0";當對字元陣列操作時,返回的是陣列的總的長度,也就是當把陣列作為引數傳遞給sizeof時是不會退化的。strlen 計算的是字串的長度,單位是「字元」,只能對字串運算,而且它是函式(不是運算子),計算時,不包含末尾的"\0";當對字元陣列操作時,返回的是陣列總存放的字串的實際長度(也就是\0之前的),也就是當把陣列作為引數傳遞給strlen時是會退化成char*指標的。例如:
char* str = "hello!";sizeof(str)值為7;strlen(str)值為6;char str[20] = "hello!";sizeof(str)值為20;strlen(str)值為6;
6樓:匿名使用者
把是sizeof 是整個變數的大小 strlen 是字串的大小(strlen 是首地址進行計數直至遇到'\0' 停止計數):如char buffer[50]="hello world"; ("hello world" d字元後會追加個'\0'字元)printf("%d, %d \n",sizeof(buffer),strlen(buffer)); 結果為50, 11
如何在c語言中計算字串長度
7樓:溜溜達達
c語言的字串是由字元陣列形式儲存的,並約定'\0'(ascii碼值為0)作為字串結束符。其長度為從字串開始,到'\0'結束,所有字元的個數,不包括'\0'本身。
要獲得字串長度,有兩種方法可以使用,使用庫函式strlen()。strlen宣告在string.h中,原型為int strlen(char *str);功能為求str的長度,並返回。
對於字串str, 可以用**求長度。當str[len]為0時,退出迴圈,退出後的len值就是str的長度。
拓展資料:使用strlen函式,包含在標頭檔案string.h裡,功能就是計算字串s的(unsigned int型)不包括'\0'在內的長度。
8樓:
c語言計算字串長度,可以手動計算也可以使用庫函式或者sizeof()操作符。
方法:自定義函式求長度
使用strlen()函式
使用sizeof()操作符
int cont_str(char *s)
strlen(str); //假設str為待求的字串陣列名
sizeof(str)/sizeof(str[0]); //假設str為待求的字串陣列名
strlen()函式求出的字串長度為有效長度,既不包含字串末尾結束符 『\0』;
sizeof()操作符求出的長度包含字串末尾的結束符 『\0』;
當在函式內部使用sizeof()求解由函式的形參傳入的字元陣列的長度時,得到的結果為指標的長度,既對應變數的位元組數,而不是字串的長度,此處一定要小心。
9樓:1024程式設計師
c語言經典例子之計算一個字串的長度
10樓:匿名使用者
用strlen得到整個長度,再用迴圈語句找到空格位置,然後計算得到兩部分的長度即可。
11樓:匿名使用者
用一個子函式就可以了
int sr(const char s)
12樓:泰和劉老師黃
用迴圈語句控制,用if判斷.以空格為分界分別計算就可以
13樓:花晨溪谷
直接用int()來算
14樓:啊黑夜傳說啊
就用了一個strlen函式
#include
#include
int main()
關於c語言sizeof檢測字串長度的問題
15樓:匿名使用者
為什麼應該是4啊
你取的是buf的size啊 buf是個char陣列 你這樣用取的是陣列的長度
16樓:金色潛鳥
字串長度用 strlen() 測定。
sizeof() 是 「運算子」,計算後面的 型別 或 變數 佔據的記憶體(以位元組為單位)。
例: sizeof(unsigned int) 得 4sizeof(bb->buf); bb->buf 物件是 char buf[100]; 所以得 100
sizeof(pp); char *pp; pp 是指標,等同 一個 unsigned int 地址,所以得 4。
17樓:七週佳琪
指標是一個很重要的概念,它記錄了另一個物件的地址。既然是來存放地址的,那麼它當然等於計算機內部地址匯流排的寬度。所以在32位計算機中,一個指標變數的返回值必定是4。
bb是指標變數,但bb->buf不是。
18樓:周生
sizeof(bb->buf)中buf是一個陣列名,sizeof陣列名會得到整個陣列所佔的位元組數。陣列首地址可以當成常指標,但是和指標還是有區別的
19樓:匿名使用者
你這個buf不在同一個語句快中肯定是不一樣的結果啊,前面的結果是4應為初始化時候賦值為buf,分來4個位元組,後面的buf是直接分給了100個位元組的,這個不奇怪吧……用程式測試,相信結果就好
20樓:
因為buf後面其實還有一個\0結尾,這也算一個位元組,所以是結果是4.
21樓:匿名使用者
sizeof(pp)測的是char指標的長度
其他兩個測的都是陣列長度
22樓:小御景柚姬
sizeof 求的是變數的佔用空間, 求字串長度用 strlen / wcslen
在c語言求字元長度的問題,strlen與sizeof怎麼計算出來的長度不是我們理解的那樣?
23樓:匿名使用者
sizeof(p)計算的是p變數的
bai大小du
zhi由於p是指標,p的大小就是4位元組dao,它不是求內容的長度,
24樓:匿名使用者
strlen獲取字串bai的長度。
每個中文du字元佔用zhi兩個位元組,所以dao中國是strlen是2+2=4;
英文字元儲存一版個位元組,故
權zg是1+1=2
sizeof用於求取佔用的空間。
但是注意,你求取的物件不是字串本身,而是變數本身。p和q兩個變數均為指標,指標在計算機中佔用4個位元組,所以最後兩個都是4.
25樓:匿名使用者
strlen的結果是bai
正確的,而dusizeof是在編譯的時候處理的,zhi這個dao時候編譯專器還不知道你這個指標指向的內容呢,因為你屬這個指標指向中國,是在執行的時候才處理的,好好想想,就是sizeof是在編譯的時候就已經算出結果了,不管你程式執行的時候指向**,它都是那個值。如果你寫sizeof(」中國」)那結果就是5了
以上純屬手打,望採納
c語言 計算字串長度
26樓:
作者你好!
首先要分清楚:字元陣列和字串的關係!
字串存放在陣列中,因此,一個字元陣列可以存放幾個串,單字串函式只認字串結束標誌'\0';
1. strlen(wer wer):字串為"wer_wer"這種字串常量,系統會在其後自動補上'\0';而求字串長度的函式strlen()只要遇見'\0';就返回函式值!
而且'\0'不算在其中!故返回值為7(空格也算一個字元!)
2. strlen(wer\0wer) 其中的字串為"wer\0wer"而strlen函式遇到'\0'即結束,故返回值為:3
3. '\0'不是空格,也不是回車!通過ascii碼錶,你可知道,'\0'是ascii碼值代表0(null);而空格的ascii碼為:
'\32' 32 回車的ascii碼值為'\13' 13
希望對你有所幫助!!!!
27樓:
c語言計算字串長度,可以手動計算也可以使用庫函式或者sizeof()操作符。
方法:自定義函式求長度
使用strlen()函式
使用sizeof()操作符
int cont_str(char *s)
strlen(str); //假設str為待求的字串陣列名
sizeof(str)/sizeof(str[0]); //假設str為待求的字串陣列名
strlen()函式求出的字串長度為有效長度,既不包含字串末尾結束符 『\0』;
sizeof()操作符求出的長度包含字串末尾的結束符 『\0』;
當在函式內部使用sizeof()求解由函式的形參傳入的字元陣列的長度時,得到的結果為指標的長度,既對應變數的位元組數,而不是字串的長度,此處一定要小心。
28樓:溜溜達達
c語言的字串是由字元陣列形式儲存的,並約定'\0'(ascii碼值為0)作為字串結束符。其長度為從字串開始,到'\0'結束,所有字元的個數,不包括'\0'本身。
要獲得字串長度,有兩種方法可以使用,使用庫函式strlen()。strlen宣告在string.h中,原型為int strlen(char *str);功能為求str的長度,並返回。
對於字串str, 可以用**求長度。當str[len]為0時,退出迴圈,退出後的len值就是str的長度。
拓展資料:使用strlen函式,包含在標頭檔案string.h裡,功能就是計算字串s的(unsigned int型)不包括'\0'在內的長度。
c語言中字元陣列只能存放字串,C語言中字元陣列只能存放字串?
八哥說科技 不是的,c語言中字元陣列既可以儲存字元,又可以儲存字串。字元陣列本意就是是指用來存放字元資料的陣列。字元陣列的元素是字元型別的。字元陣列用於存放字元或字串。c語言中字元陣列的一般形式為 char 陣列名 資料長度 例如 char a 10 a 0 0 a 1 1 a 2 2 a 3 3 ...
C語言字元陣列與字串問題,C語言中將字串賦值給字元陣列的問題
渿河 這是在定義時初始化 如果你的右邊花括號內的字元個數少於 陣列元素個數 那麼其餘的陣列元素將會初始化為0 0 的ascii碼的值就是0 如果你不指定陣列元素個數 編譯器會自動幫你計算出元素個數的 char c 10 這個是已經給定了陣列的大小,達不到陣列大小的長度的話會自動添零的 c語言中將字串...
c語言中測試字串長度的函式,C語言中測試字串長度的函式
你的if中的條件寫的有問題,應改為 if c a c z c a c z 這樣說明只有你輸入的是字母時,a的值才執行 操作。而你的條件c a z a z 後半部分 a z a z 返回值永遠都是真,因為a和a永遠都比z和z小呀。前半部分的c是你輸入的值,如果不是輸入了0對應的ascii碼值48,那也...