C說話中關於sizeof 和 strlen的差別剖析。本站提示廣大學習愛好者:(C說話中關於sizeof 和 strlen的差別剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中關於sizeof 和 strlen的差別剖析正文
1、編譯時盤算運算符sizeof,可用類型或變量做參數,盤算占用內存的年夜小。sizeof後若是類型必需加括弧,若是變量名可不加括弧。sizeof(x)可用來界說數組維數如:
printf("%d\n", sizeof(short));
輸入的成果為短整型的長度2。用構造類型或變量做參數時,sizeof 前往現實的年夜小,當用於靜態數組時,sizeof 前往全體數組的尺寸。sizeof 操作符不克不及前往靜態地被分配了的數組或內部的數組的尺寸
2、運轉時盤算strlen,只能用char*做參數,且必需是以''\0''開頭的。盤算的是字符串的長度。如:
char str[20]="0123456789";
int a=strlen(str); // 成果為a=10
int b=sizeof(str); // 成果b=20;
3、處置靜態數組:
char str[20]="0123456789";
int a=strlen(str); // a=10; strlen 盤算字符串的長度,以\0'為字符串停止標志。
int b=sizeof(str); // b=20; sizeof 盤算的則是分派的數組str[20] 所占的內存空間的年夜小,不受外面存儲的內容影響。
4、處置指針:
char* ss = "0123456789";
sizeof(ss) // 成果4,
ss是指向字符串常量的字符指針,sizeof 取得的是一個指針所占的空間。sizeof(*ss) 成果1,*ss是第一個字符 其實就是取得了字符串的第一名'0' 所占的內存空間,是char類型的,占用1字節。strlen(ss)= 10,若要取得這個字符串的長度,則必定要應用 strlen
以上所述就是關於sizeof 和 strlen差別的全體內容了,願望年夜家可以或許愛好