char* s = "0123456789";sizeof(s); //結果 4 ===》s是指向字串常量的字元指標
sizeof(*s); //結果 1 ===》*s是第乙個字元
strlen(s); //結果 10 ===》有10個字元,strlen是個函式內部實現是用乙個迴圈計算到\0為止之前
strlen(*s); //結果 10 ===》錯誤,輸入為char * str
char s = "0123456789";
sizeof(s); //結果 11 ===》s是陣列,計算到\0位置,因此是10+1
strlen(s); //結果 10 ===》有10個字元,strlen是個函式內部實現是用乙個迴圈計算到\0為止之前
sizeof(*s); //結果 1 ===》*s是第乙個字元
char s[100] = "0123456789";
sizeof(s); //結果是100 ===》s表示在記憶體中的大小 100×1
strlen(s); //結果是10 ===》strlen是個函式內部實現是用乙個迴圈計算到\0為止之前
int s[100] = "0123456789";
sizeof(s); //結果 400 ===》s表示再記憶體中的大小 100×4
strlen(s); //錯誤 ===》strlen的引數只能是char* 且必須是以『\0『結尾的
char q="abc";
char p="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);\\結果是 4 3 3 2
char p = ;
char q = ;
sizeof(p); //結果是8 ===》p表示在記憶體中的大小 8×1
strlen(p); //為乙個隨機值,結果與編譯器有關,不同編譯器結果一般不同
sizeof(q); //結果是8 ===》p表示在記憶體中的大小 8×1
strlen(q); //結果為4 ===》存在'\0',遇到'\0'計算停止。
//
struct stu;stu stu;
printf("%d\n",sizeof(stu)); //結果 12 ===》記憶體補齊
為了cpu訪問的速度最快,c語言在處理資料時經常把結構變數中的成員的大小按照4或8的倍數計算,這就叫資料對齊(data alignment)。
函式 strlen 返回的是乙個型別為 size_t 的值,從而有可能讓程式導致意想不到的結果
/*判斷一*/if(strlen(x)>= strlen(y))
/*判斷二*/
if(strlen(x)- strlen(y)>= 0)
從表面上看,上面的兩個判斷表示式完全相等,但實際情況並非如此。其中,判斷表示式一沒什麼問題,程式也能夠完全按照預想的那樣工作;但判斷表示式二的結果就不一樣了,它將永遠是真。
原因很簡單,因為函式 strlen 的返回結果是 size_t 型別(即無符號整型),而size_t 型別絕不可能是負的。因此,語句「if(strlen(x)-strlen(y)>=0)」將永遠為真。兩個size_t 型別相減其結果仍然是size_t 型別。
同樣,就算表示式中同時包含了有符號整數和無符號整數,還是有可能產生意想不到的結果
/*判斷一*/if(strlen(x)>= 5)
/*判斷二*/
if(strlen(x)- 5>=0)
很顯然,判斷表示式二的結果還是永遠是真,其原因與上面相同。
為什麼?
c語言中有符號數和無符號數進行運算(包括邏輯運算和算術運算)缺省會將有符號數看成無符號數進行運算,其中算術運算預設返回無符號數,邏輯運算當然是返回0或1
sizeof 與 strlen 的區別
一 示例 eg1 下列 char buffer 256 char pbuffer buffer cout sizeof buffer cout sizeof pbuffer 其執行結果為 eg2 簡單說明 sizeof gives the amount of storage,in bytes,ass...
strlen與sizeof的區別
1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用char 做引數,且必須是以 0 結尾的。4....
sizeof與strlen的區別
sizeof 表示式 是c c 關鍵字 不是函式 功能 返回 表示式 結果所佔機器 位元組 的大小。strlen 字串 是c c 標準庫的函式 不是關鍵字 在標頭檔案 string.h 中宣告。功能 計算 字串 中的 0 之前的字元個數。特別注意 strlen總是假定傳給它的引數是以null結束符 ...