了解指针前需要先了解数据的存储类型、存储方式和存储地址的概念
一个int类型定义的是4个字节
比如我们int a =10;
我们可以看做把a这个值放在了一个四个字节为单位的一个内存中,而存放a的这个内存是有一个地址的,我们可以把这个地址看做1001,也就是说a这个(旅客)整型变量居住在1001号房间
指针变量是什么呢
比如我们int* pa = &a;
&a就是a的地址(房间号),也就是1001,这个时候,我们创建了一个pa的指针变量,将整型变量 a的地址赋值给了指针变量pa,我们可以通过访问pa这个值来得到1001这个数字,然后就可以访问1001号房间,也就是访问a
如果这个时候我们修改*pa = 20,此时修改的是编号1001房间里面a的值,这个时候打印a就变成了a = 20
所以说指针变量*pa指向的是a的地址,被形象的称为指针
所有对于变量的访问都是通过地址进行的
//例如 int main() { int a = 10; printf("%dn", a); return 0; }
此时打印a的步骤是:因为前面定义了a这个变量,系统会自动给a分配按整型存储方式的4个字节,并建立了a这个变量名和其所在地址的对应表,打印的时候首先通过变量名找到对应的地址,然后在这个4个字节中按照整型的存储方式读出整型变量a的值,最终按照10进制整数的格式输出
这种访问方式被称为“直接访问”方式
还有“间接访问”方式:将变量a的地址存放在指针变量*pa中,通过访问*pa的变量值来找到a的地址,从而达到访问a变量的结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)