C言語中指針定義的字符串和數組定義的字符串的區別。本站提示廣大學習愛好者:(C言語中指針定義的字符串和數組定義的字符串的區別)文章只能為提供參考,不一定能成為您想要的結果。以下是C言語中指針定義的字符串和數組定義的字符串的區別正文
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時,運轉順序時會自動中止,相反的字符串的指針是指向同一個中央的。