#include<stdio.h>
int main(int argc , char *argv[])
{
int num = 100;
int *p1 = #
int **p2=&p1;
printf("&num = %p\n",&num);
printf("&p1 = %p\n",&p1);
printf("&p2 = %p\n",&p2);
printf("p1 = %p\n",p1);
printf("p2 = %p\n",p2);
printf("*p2 = %p\n",*p2);
printf("*p1 = %d\n",*p1);
printf("**p2 = %d\n",**p2);
return 0;
}
执行结果
&num = 0xbfd5cb04
&p1 = 0xbfd5cb08
&p2 = 0xbfd5cb0c
p1 = 0xbfd5cb04
p2 = 0xbfd5cb08
*p2 = 0xbfd5cb04
*p1 = 100
**p2 = 100
二级指针:存储的是一级指针的地址
二级指针关联 的是一级指针
&p1:得到的就是指针本身的地址,p1不带取址符得到的就是指针指向数据的地址(也就是该数据的地址)
int num = 100;
int *p1 = #//一级指针关联的是变量地址
int **p2=&p1; //二级指针关联的是一级指针的地址
*p1说明p1是指针,&p1说明要取p1的地址
**只是表示p2是二级指针而已(要这样思考)然后将二级指针指向的地址为一级指针地址(&p1)