字符數組保存時有可能最后一位有‘\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;