C語言- 第二十二章| 指標- 指標與字串 - J.J.'s Blogs

文章推薦指數: 80 %
投票人數:10人

字元指標可以參考至一個字串常數,這使得字串的指定相當的方便,例如下面的程式片段宣告一個字串指標,並指向一個字串常數。

1, char *str = "hello"; ... Thiswebsite Archives Categories Tags About Donate RSS 歡迎!您似乎正在使用廣告攔截器。

請考慮通過禁用您的廣告攔截器來支持我。

J.J.Huang   2019-10-26   C   瀏覽次數:次 {{moment(1572051600000).fromNow()}} C語言-第二十二章|指標-指標與字串 字元指標可以參考至一個字串常數,這使得字串的指定相當的方便,例如下面的程式片段宣告一個字串指標,並指向一個字串常數。

1char*str="hello"; 使用字元指標的好處是,你可以直接使用指定運算子將一個字串常數指定給字元指標。

1str="world"; 123456789101112#includeintmain(){char*str="hello";puts(str);str="world";puts(str);return0;} 在程式中使用一個字串常數時,該字串常數會佔有一個記憶體空間,例如"hello"與"world"都各佔有一塊記憶體空間,所以上面的程式str前後指向的記憶體位址並不相同。

123456789101112131415#includeintmain(){ char*str="hello"; void*add=str; printf("%s\t%p\n",str,add); str="world"; add=str; printf("%s\t%p\n",str,add); return0;} 如上面的程式所示,"hello"字串常數的位址是在01297B30,而"world"字串常數的位址是在01297BDC,兩個的位址並不相同。

要注意的是,如果使用陣列的方式宣告字串,則不可以直接使用=指定運算子另外指定字串,例如下面的程式是錯誤的示範: 12charstr[]="hello";str="world";//error,incompatibletypesinassignment 在字元指標中使用指標陣列,可以更方便地處理字串陣列。

123456789101112#includeintmain(){char*str[]={"professor","teacher","student","etc."};for(inti=0;i<4;i++){puts(str[i]);}return0;} str中的每個元素都是字元指標,也各自指向一個字串常數,進一步擴充這個觀念,就可以使用二維以上的字串陣列。

12345678910111213141516#includeintmain(){char*str[][2]={"professor","Justin","teacher","Momor","student","Caterpillar"};for(inti=0;i<3;i++){printf("%s:%s\n",str[i][0],str[i][1]);}return0;} 額外補充一點,下面兩個宣告的作用雖然類似,但其實意義不同。

12char*str1[]={"professor","Justin","etc."};charstr2[3][10]={"professor","Justin","etc."}; 第一個宣告是使用指標陣列,每一個指標元素指向一個字串常數,只要另外指定字串常數給某個指標,該指標指向的記憶體位址就不同了,而第二個宣告則是配置連續的3x10的字元陣列空間,字串是直接儲存在這個空間,每個字串的位址是固定的,而使用的空間也是固定的(也就是含空字元會是10個字元)。

註:以上參考了指標與字串 C語言-第二十一章|指標-指標的指標 C語言-第二十三章|指標-命令列引數



請為這篇文章評分?