天天看點

字元數組與字元指針的記憶體配置設定和使用

 下面這段程式反映了C語言處理字元數組和字元指針的記憶體配置設定的方式:

  1. #include<stdio.h> 
  2. #include<stdlib.h> 
  3. void main() 
  4.     char *b ="qwerty";   //定義一個字元類型的指針,用一個字元串初始化,這時b儲存的是此字元串第一個字元的位址 
  5.     printf("b=\t%s\n",b);    //輸出從指針b開始的一個字元串(%s) 
  6.     printf("*b=\t%c\n",*b);   //輸出字元指針b所指向的位址裡儲存的字元(%c) 
  7.     printf("b[2]=\t%c\n",b[2]); //輸出從b所指向的位址開始數的第三個字元 
  8.     //b[2] = 'a';  //錯誤,b是字元指針,隻能進行指派,不能直接修改之後的元素 
  9.     char a[] = "abcde";  //定義一個字元數組,a此時儲存的是這個字元數組的以一個元素在記憶體中的位址 
  10.     b = a;               //b獲得了a的值,也指向了字元數組 
  11.     b[0] = 'y';          //此時可以直接指派,因為b指向了數組 
  12. //b[7] = 'a'; //此修改編譯時不會報錯,但運作時卻會造成數組越界
  13.     printf("a[]=\t%s\n", a);   //輸出數組a的值,因為a和b指向了同一段記憶體位址,是以上一句對b的修改也是對a的修改 
  14.     printf("a[5]=\t%d\n", a[5]);//輸出字元串最後的結束标志"\0" 
  15. b[2] = 0;            //将第三個字元替換成‘0’,會把字元串截斷,導緻輸出不完整 
  16.     printf("b=\t%s\n", b);   //輸出會隻有前兩個字元 
  17.     system("pause");     //VS中讓指令行視窗暫停 

  輸出:

b=      qwerty

*b=     q

b[2]=   e

a[]=    ybcde

a[5]=   0

b=      yb

請按任意鍵繼續. . .

繼續閱讀