在閱讀c和指標這本書,才發現自己一直對於字串常量的概念不夠清晰。
字串常量可以說是乙個指標,
char * pathname = "/usr/temp/******xx";
strcpy( pathname+ 10, "abcde");
printf("%s\n",pathname);
像這3條語句其實是非法的,因為pathname 是乙個指向char型別的指標,其實也就是字串常量這個指標,指向字串的第乙個字元。
也就是說,pathname指標指向乙個陣列,pathname也就是頭元素的位址,也就是『/』的記憶體位址;
"/usr/temp/x
******" 這樣的定義是乙個字串常量,不能修改,所以程式會崩潰。
char q[30] = "/usr/temp/******xx";
strcpy( q + 10, "abcde");
printf("%s\n",q);
但是在這裡q是乙個陣列,是可以修改的。所以這樣程式可以正常執行。
指標和字串常量
指標和字串常量 首先比較兩段 1char ch1 hello ch1 h ok ch1 0 h ok printf s r n ch1 2 char ch2 world ch2 w 執行時錯誤 ch2 0 w 執行時錯誤 printf s r n ch2 這裡的 world 是字串常量,而 hell...
C C 字串常量 字元陣列和字元指標
通常,如果在程式中定義了乙個字串,那麼為了節省記憶體,會把相同的字串儲存到乙個單獨的 相同的位置,此時如果用多個字元指標指向它,那麼指標的值會相同。常量字串位於c c 的文字常量區,在程式結束以後由系統釋放。char p string1 example char p string2 example ...
C C 字元陣列 字元指標和字串常量
c 有兩種處理字串的方式,除了沿用c風格字串,另一種方法是借助用string class庫。字串是一系列儲存在連續記憶體位元組中的字元 每個字元對應乙個位元組 所以可以將字串儲存在字元陣列中。以下四種宣告方式都是字元陣列,但是只有第乙個不是字串,其中無效字元 null character 0 其在機...