2016-12-03 數組定義字元串: 每次定義數組的時候,系統都會在記憶體開闢你指定數組大小的空間,並且數組中的內容對於我們是可讀可寫的,看如下代碼: 1 #include<stdio.h> 2 int main() 3 { 4 char str[100] = "hello world"; 5 ch ...
2016-12-03
數組定義字元串:
每次定義數組的時候,系統都會在記憶體開闢你指定數組大小的空間,並且數組中的內容對於我們是可讀可寫的,看如下代碼:
1 #include<stdio.h> 2 int main() 3 { 4 char str[100] = "hello world"; 5 char str1[100] = "hello world"; 6 str[0] = 'd'; 7 printf("%s\n\n",str); 8 printf("%x\n",&str); 9 printf("%x\n",&str1); 10 return 0; 11 }View Code
再看執行結果:
每次定義的數組的首地址是不相同的。
指針定義字元串:
指針定義的字元串是存儲在記憶體中的靜態存儲空間中,可讀但不可寫,並且如果再定義一個相同的字元串,指針的值不會變,還會指向原來的地址,不會開闢新的存儲空間,看如下代碼:
1 #include<stdio.h> 2 int main() 3 { 4 char *p = "hello world"; 5 char *p1 = "hello world"; 6 //p[0] = 'd'; 7 printf("%s\n\n",p); 8 printf("%x\n",p); 9 printf("%x\n",p1); 10 return 0; 11 }View Code
看執行結果:
當我們試圖改變hello world中的h時,運行程式時會自動停止,相同的字元串的指針是指向同一個地方的。