char類型的字符數組中的'\0'問題


字符數組保存時有可能最后一位有‘\0’,需要注意。參考:

char a[] ="abcd";  //這樣賦值最后一位會有隱含的‘\0’; 用cout輸出來看到的還是abcd

並且有:

sizeof(a) == 5;

strlen(a) == 4;
char a[5] = "abcde";            //會報錯,最后要留一位給‘\0’

char a[5] = {'a','b','c','d','d'}; //沒問題,沒有\0的,sizeof(a) == 4

 

char* a = “abcde”;

sizeof(a) == 4;                    // 這個是a這個指針的長度,不是數組長度

strlen(a) == 5;                    // 這個是該數組長度

 

strlen:從數組指針開始,直到找到’\0’結束,這中間的字符個數;

如果char* 類型變量不是用常量直接初始化的,那么在賦值結束時一定要手動添加一個’\0‘(分配空間時,也需要多分配一個char空間),這樣用strlen才可以正確得返回長度,后面的使用也不會有問題,例如:沒有加’\0‘時,這個變量作為參數傳入函數就出了問題invalid_argument。

 

最后一位的’\0‘不參與計算==》》 a[strlen(a)-1] == e;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM