正確獲得字符串“變量”的方法:
- char str[] = {"abc"};
- char str[] = "abc";
- char str[] = {'a','b','c','\0'};
- char str[4] = {'a','b','c','\0'};//注意:數組長度一定要給結尾符一個位置。
- char *str =(char *)malloc(sizeof(char)*4);
strcpy(str,"abc");
使用動態內存申請的方式獲得的字符串和上面幾種方式獲得的字符串的區別就在去,上面幾種字符串是局部變量,退出函數后空間就會被釋放,而這種方式獲得的內存空間除非被手動釋放,否則不會釋放(指針變量會被自動釋放)。
注意,以下兩種聲明並初始化的方式是錯誤的:
- char str[] = {'a','b','c'};
因為 str 將被認為是一個長度為 3 字節的字符數組,所以沒有預留給結尾符 \0 的空間,這樣很多對字符串的操作都將出錯。 - char *str ="abc";
這種方式得到的字符串是常量,不可修改,賦值時是將常量區的地址賦值給指針。
此外,聲明好后的字符串變量用 = "abc" 進行賦值,將會把 "abc" 在內存的常量區的首地址賦值給前面的變量,這顯然是不對的。
如有錯誤,還請斧正,我的郵箱 617491383@qq.com。