字串與字元陣列初始化及長度計算:
方式一:char a="hello";系統自動在末尾補'\0',sizeof的結果為6,strlen的結果為5;
方式二:char a=; 末尾不補'\0',sizeof的結果為5,strlen的結果為 19(不正確的原因為strlen執行時遇到'\0'結束,而a中並沒有'\0');
方式三:char *p="hello",方式一和方式二都是字元陣列的定義,方式三是字串的定 義,p是指向字串常量"hello"的常量指標,指標指向位置的字元不能改變, sizeof的結果為4(是指標本身佔空間的大小,與所指字串無關),strlen的 結果為5,末尾自動補'\0';
sizeof: 運算子,在編譯時執行,計算初始化時的大小(最大容量),包括'\0'位在內, 不能計算動態分配空間的大小。
strlen : 計算字串或字元陣列中有內容字元個數的函式,遇到'\0'結束運算,不把'\0'位計算在內,不能用於沒有'\0'的字元陣列。
本人初學者,還請各位批評指正。
字串陣列初始化
1 char arr 10 hi 初始化字串陣列時,編譯器自動將字串最後乙個字元後面加上 0 以表示字串的結束。如果陣列的大小大於字串的長度 1,那麼把字串結束後面的元素也都初始化為 0 看這段程式 定義乙個大小為12的字串陣列 char str1 12 jiajia 讓乙個char型的指標指向這個...
字串初始化
在c語言程式設計中,當我們宣告乙個字串陣列的時候,常常需要把它初始化為空串。總結起來有以下三種方式 1 char str 10 2 char str 10 3 char str 10 str 0 0 第 1 2 種方式是將str陣列的所有元素都初始化為 0 而第 3 種方式是只將str陣列的第乙個元...
字串初始化
在 裡,經常會用字串進行初始化操作。比如 void func void 對於上面2條初始化語句,它們的區別是什麼呢?1,首先,hello world 是乙個字串常量,存放在靜態常量區。2,str1是乙個字元陣列,分配在棧上,儲存空間由 hello world 的長度 含 0 決定,存放的內容由 he...