1.认识指针的一些基本性质
通过下面几段代码理解指针操作指定变量的一些基础性质。
实例
#include<stdio.h>
int main()
{
int a = 2 ;
int* p = &a;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
*p = 4;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
return 0;
}
结果
2
000000E0F719F554 //地址是由十六进制显示
000000E0F719F554
4
000000E0F719F554
000000E0F719F554
在主程序中,我们首先设置了一个整型变量a,随后将2存储于该变量内,随后我们设置了一个指针变量p,用以对a进行操作。
我们打印出a的值/a的地址/指针p指向的地址
可以得出指针的一个基本性质:指针变量实际上就是一个存储原变量地址的变量。在打印指针变量的地址时,指针会直接指向原变量的地址,而非指针变量自身的地址,这是因为指针变量的存储位置是一个特殊的工作区,指针此时类似于一种快捷方式,它的所有性质总会直接指向原变量。
现在,我们通过解引用指针p,将整型4存储在变量a的地址,打印后我们可以看到,解引用直接帮助我们找到原变量的存储地址,随后将新的数值放了进去。
以上可以理解为,我们通过拿出抽屉里的房间号牌,将已经预定的房间内里原来存放的东西清理掉,随后放入新的东西。这个过程我就不需要去理解我原来叫这个房间是a还是b或是其他名字了,我只需要直接拿着号牌找到该房间即可。
实例2
#include<stdio.h>
int main()
{
double a = 1.34;
double* pa = &a;
printf("%d", sizeof(pa));
return 0;
}
结果
8
我们设置了一个double类型的变量,向内存申请了8个字符存储3.14随后我们设置了一个double类型的指针变量pa,用来指向该变量,我们尝试打印pa指向的a变量所申请的内存大小,结果显然是整型数8,因为指针变量的性质只指向原变量。
感兴趣的初学者可以尝试short类型,char类型等等,来熟悉指针的基本性质。