出識指針9(容易誤解的指針)

<span style="font-size:24px;">void main()
{
  char *str = "title china is big";
  char *p = str;//存儲首地址
  while(*str)
  {
    putchar(*str);
	str++;
  }
  system(p);
  printf("\n%s",*str);
  system("pause");
}</span>


  *p = str時,p跟str指向同一個位置,當str++時,會容易誤以爲此時*p 與 *str 還是相等的。這是因爲受之前 基本類型變量的地址賦值給指針的影響,以爲 這裏跟 int a = 3,int *p = &a,此時 若 *p = 4,則a 也等於4。其實這裏是不一樣的,當str++時,指針str 就會向前移動,p還在原來的位置。所以,此時system(p)能正確運行,system(str)是不能正確運行的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章