1. 程式人生 > >指標指向字串

指標指向字串


#include <stdio.h>
int main()
{
 char *p="breadfruit";
 char *p1;
 p1=p;
 *(p1+3)='b';
 printf("%s\n",p);
 return 0;
}
這程式什麼地方不對?還有指標輸出為什麼用p而不是*p?
如果把 char *p="breadfruit";改成char p[]="breadfruit";好像就可以了,為什麼呢?
答:char *p="breadfruit"; 意思是定義一個char*的指標,該指標的值是,靜態記憶體區 “breadfruit”的首地址,這片記憶體是不可寫的!

char p[]="breadfruit";
就是定義一個數組,該陣列擁有11個位元組的空間,這片空間可以自由讀取。