文档介绍:=20,y=1,z=155;int*p;p=&x;100020x10021y1004155z20001000p2002指针变量指针变量:存放地址的变量某个变量的地址指向(内存单元).指针变量所指向的变量的类型int*p;p是整型指针,指向整型变量float*fp;fp是浮点型指针,指向浮点型变量char*cp;cp是字符型指针,指向字符型变量类型名*(&)和间接访问运算(*)*:间接访问运算符,访问指针所指向的变量。*p:指针变量p所指向的变量。a3&ap*p如果指针的值是某个变量的地址,通过指针就能间接访问那个变量。&:取地址运算符,给出变量的地址。int*p,a=3;p=&a;把a的地址赋给p,即p指向a//&ap*p(1)当p=&a后,*p与a相同(2)int*p;定义指针变量p*p=10;指针p所指向的变量,即a,改变变量值(3)&*p与&a相同,是地址*&a与a相同,是变量(4)(*p)++等价于a++将p所指向的变量值加1*p++等价于*(p++)//先取*p,然后p自加,此时p不再指向a说明inta=3,*p;p=&a;.赋值运算a3&ap1&ap2*p1*p2inta=3,*p1,*p2;p1=&a;//把a的地址赋给p1,即p1指向ap2=p1;//p2也指向a//:指针变量必须初始化。voidmain(){inta=1,b=2,*p1,*p2,*pt;p1=&a;p2=&b; printf("a=%d,b=%d,*p1=%d,*p2=%d\n",a,b,*p1,*p2);pt=p1;p1=p2;p2=pt;printf(“a=%d,b=%d,*p1=%d,*p2=%d\n”,a,b,*p1,*p2);return0;}p1b2&bp2*p2a1&a*p1ptb2&ap2*p1a1&bp1*p2pt&aa=1;b=2;*p1=1,*p2=2a=1;b=2;*p1=2,*p2=(int*px,int*py){intt;t=*px;*px=*py;*py=t;}要通过函数调用来改变主调函数中某个变量的值:(1)在主调函数中,将该变量的地址或者指向该变量的指针作为实参(2)在被调函数中,用指针类型形参接受该变量的地址(3)在被调函数中,改变形参所指向变量的值abpxpy1221//swap(&a,&b);.数组和地址间的关系inta[100],*p;数组名代表一个地址,它的值是数组首元素的地址(基地址)a+i是距数组a的基地址的第i个偏移3000a[0]地址内容数组元素3002a[1]3198a[99]a[i]aa+1a+99a+i&a[i]*(a+i)sum=0;for(i=0;i<100;i++)sum=sum+a[i];*(a+i)下标运算符[][100],*p;p=a;或p=&a[0];pp+1p+99p+i3000a[0]地址内容数组元素3002a[1]3198a[99]a[i]aa+1a+99a+i&a[i]a[i]a+i*(a+i)p+i*(p+i)&p[i]p[i]p=a;sum=0;for(i=0;i<100;i++)sum=sum+p[i];等价等价*(p+i)sum=0;for(p=a;p<=&a[99];p++)sum=sum+*p;.