&:取得變數的位址。
*:間接參考,指使用指標取得某個記憶體的內容
#include//指標與指標資料型態 int main() { int x=100; int y=0; int *p;//定義一個可以存放整數變數指標 (位址) 的變數p p=&x;//x的記憶體位置設定給指標p printf("P 的Memory address=%p,P值=%d\n",&p,&p); printf("X 的Memory address=%p,X值=%d\n",&x,x); system("pause"); return 0; }

error:
發現原本p address應該等於x address,code其實沒有錯,但*p也是需要一個address,是printf裡不需要&
#include#include //指標與指標資料型態 int main() { int x=100; int y=0; int *p;//定義一個可以存放整數變數指標 (位址) 的變數p p=&x;//x的記憶體位置設定給指標p printf("P 的Memory address=%p,P值=%d\n",p,*p); printf("X 的Memory address=%p,X值=%d\n",&x,x); system("pause"); return 0; }

#includeint main() { int x; int *p; p = 0; // 這讓p指到不合法的地方去了 *p = 0; // 透過p去設定不合法的記憶體, 會產生嚴重錯誤 x = *p; // 這也是錯的 } 在上面的例子中,*p=0的指令就足夠讓你的C程式一團混亂了。