在C中創建字符串的方法有兩種,即通過指針創建或通過數組創建。
通過指針創建
創建語句:
1 char *str = "abc";
這句代碼首先創建一個指針,再將字符串賦值給指針,其實這句代碼可以寫為兩句,即:
1 char *str; 2 str = "abc";
為什么第2句代碼可以成立,可以這樣來解釋,在C語言中賦值符號兩邊的數據類型必須一致才不會報錯。這樣看來,str和“abc”都為指針類型,查閱資料后了解到確實如此。原因在於雙引號做了如下工作:
1. 申請空間(在常量區),存放字符串;
2. 在字符串末尾添加字符結束符“\0”;
3. 以指針形式返回地址。
根據第3點語句2中等號右邊的“abc”返回的是一個指針類型的變量。我們來測試一下程序的結果如何,測試代碼如下:
1 void main() 2 { 3 char *str; 4 str = "abc"; 5 printf("%s",str); 6 getchar(); 7 }
結果如下:
測試工具為vc++6.0
通過數組創建
創建語句,以下兩個語句都可以創建字符串,需要注意的是用雙引號表示的字符串后面還有一個隱藏的字符結束符“\0”,所以1中的字符長度應該筆你實際看到的要多1。
創建方法1 char *str[4] = "abc";
創建方法2 char str[4] = {'a','b','c','\0'};
針對創建方法1的測試代碼:
1 void main() 2 { 3 char str[4] = "abc"; 4 printf("%s",str); 5 getchar(); 6 }
針對創建方法2的測試代碼
void main() { char str[4] = {'a','b','c','\0'}; printf("%s",str); getchar(); }
測試結果如下,都是一樣的:
測試工具為vc++6.0
以上就是C語言中字符串的創建方式。