[筆記]關於C裡面的pointer

上課學到pointer
很多人聽不太懂,手邊剛好有寫個測試程式
分享給大家,程式碼有點冗長
都是為了直接看結果方便之原故
之後如果有搭配array的使用,我會再發一篇
敬請期待

環境:Microsoft Visual C++ 6.0

#include “stdafx.h”
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
 int a=3,b=5,*pn1,*pn2,**ppn;
 pn1=&b;
 pn2=&a;
 printf(“指令:\n\tint a=3,b=5,*pn1,*pn2,**ppn;\n\tpn1=&b;\n\tpn2=&a;\n\n結果:\n”);
 
 printf(“a=%-3d &a=%p \n”, a ,&a);
 printf(“b=%-3d &b=%p \n”, b ,&b);
 
 printf(“*pn1=%-3d &*pn1=%p &pn1=%p pn1=%p \n”, *pn1 ,&*pn1 ,&pn1 ,pn1);
 printf(“*pn2=%-3d &*pn2=%p &pn2=%p pn2=%p \n”, *pn2 ,&*pn2 ,&pn2 ,pn2);
 
 printf(“指令:\n\t*pn1=100;\n\n結果:\n”);
 *pn1=100;
 printf(“*pn1=%-3d &*pn1=%p &pn1=%p pn1=%p \n”, *pn1 ,&*pn1 ,&pn1 ,pn1);
 printf(“*pn2=%-3d &*pn2=%p &pn2=%p pn2=%p \n”, *pn2 ,&*pn2 ,&pn2 ,pn2);
 printf(“a=%-3d &a=%p \n”, a ,&a);
 printf(“b=%-3d &b=%p \n”, b ,&b);
 ppn=&pn1;
 printf(“指令:\n\tppn=&pn1;\n\n結果:\n”);
 printf(“**ppn=%-3d &**ppn=%p *ppn=%p\n&*ppn=%p &ppn=%p ppn=%p \n”
  , **ppn ,&**ppn ,*ppn , &*ppn, &ppn, ppn);
 
 system(“PAUSE”);
 return 0;
}