指针变量
指针变量实际上就是用来记录地址的变量。
int i = 6;
int p;
printf("%p\n",&i);
printf("%p\n",&p);//两个变量的为int数据类型,所以内存相差为四个字节
printf("&i=%p\n",&i);//取变量i的地址
int *p1 = &i;//定义一个指针变量,将i变量的地址给p1指针变量
printf("p1=%p\n",p1);//直接取p1的地址,实际上就是i的地址
最后运行的结果如下图:i的地址和指针p1的地址都为0x7ffd94b4f320,也就是说地址指向的变量的地址就是指针变量的地址。
0x7ffd94b4f320
0x7ffd94b4f324
&i=0x7ffd94b4f320
p1=0x7ffd94b4f320
再来看一下输出指针变量的值,指针变量的值实际上就是所指向的变量的值,一样的
printf("i=%d\n",i);
printf("p1=%d",*p1);
i=6
p1=6
输出结果都为6,就相当于指针所指向的变量就等于指向的变量的值。这个时候要注意的是,为什么输出的时候是*p?
因为指针输出变量是*p
输出指针内存地址是p (直接输出p就是他的地址,指针变量存储的就是地址)
获取指针变量p的内存地址数据是&p (这个获取的是p的地址,而不是他对应的变量i的地址)