1. 程式人生 > >c語言指針1

c語言指針1

指針

#include <stdio.h> /* 2018-05-26 地址是內存單元的編號 指針就是地址,地址就是指針 地址就是內存單元的編號 指針變量是存放地址的變量 指針(0019FF38)和指針變量(p)是兩個不同的概念 但是要註意:通常我們敘述時會把指針變量簡述為指針,實際含義並不一樣 */ int main(void) { int * p; // p是變量的名字,int *表示p變量存放的int類型變量的地址 // int *p 不表示定義了一個名字叫做*p的變量 // int *p 應該這樣理解:p是變量名,p變量的數據類型是int *類型 // 所謂int *類型實際就是存放int變量地址的類型 int i = 3; int j; p = &i; //ok /* 1,p保存了i的地址,因此p指向i 2,p不是i,i也不是p,更準確的說,修改p的值不會影響i的值,修改i的值也不會影響p的值 3,如果一個指針變量指向了某個普通變量,則 *指針變量 就完全等同於 普通變量 例子: 如果p是個指針變量,並且p存放了普通變量i的地址 則p指向了普通變量i *p 就完全等同於i 或者說:在所有出現*p的地方都可以替換成i 在所有出現i的地方都可以替換成*p printf("%d\n",i); //輸出3 printf("%d\n",*p); //輸出3 *p 就是以p的內容為地址的變量 */ j = *p; printf("i = %d ,j = %d ,*p = %d \n",i,j,*p); //結果i = 3 ,j = 3 ,*p = 3 printf("i的地址是:%p\n",&i); //c語言中%p用來輸出指針類型自身的值。也就是說%p用來輸出地址 printf("j的地址是:%p\n",&j); printf("p的地址是:%p\n",&p); printf("p的值是:%p\n",p); /* 輸出結果: i = 3 ,j = 3 ,*p = 3 i的地址是:0019FF38 j的地址是:0019FF34 p的地址是:0019FF3C p的值是:0019FF38 */ return 0; } //變量i的地址是0019FF38,i的值是3 //變量p的地址是0019FF3C,p的值是0019FF38,即p的值就是i的地址 //*p 就是以p的內容為地址(即i的地址0019FF38)的變量,所以*p的值是3 //註意,你在運行的時候地址肯定不是這樣的,但是i的地址和p的值一定是一樣的

技術分享圖片

c語言指針1