Monday, October 23, 2017

C語言指標與資料型態

&:取得變數的位址。
*:間接參考,指使用指標取得某個記憶體的內容

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

No comments:

Post a Comment