当前位置 博文首页 > m0_51723227的博客:C语言指针
为了更好的解释指针,在这里我们首先弄清楚一些概念
而直流电普遍用于电池,我们其他的电器(只要需要插头充电的)几乎都是需要交流电,交流电分为正电和负电
我们的电脑亦如此,因此聪明的科学家想到这点,使电脑用二进制编程,0代表负电,1代表正电.不同的正负电组合(不同的二进制排序)可以带来和储存不同信息,即我们经常听到的电信息, 而只用来存储0和1这种信息的一个空间就是一个比特位
我们国家有960万平方公里,而这么大一个地方想要具体到某个地方进行查找,肯定需要给每个地方赋予独一无二的称号(地址),比如四川省达州市XX广场XX公寓XX号, 而我们的电脑存储数据也是这样,给一个大地方划分区域,然后编号.就是地址
买电脑时候,会看到内存大小,比如4G 8G 16G(相当于中国的国土面积),
这里我们给定一个空间,然后将其划分为最基本的小单元,那么什么是该空间数据的最小存储单元呢?以机器32位为例:
bin
吗?如果是bin
,那么 2^32 = 4294967296 = 536870912 Byte = 524,288 Kb = 512 MB = 0.5 GB
计算看到,如果以bin
为最小存储单元,那么最大占用才0.5GB,即使有4GB 8GB 16GB空间也是浪费.
所以不是.
如果是Byte的话就是0.5GB * 8 = 4GB,那么就差不多了.
所以就是说数据的最小存储单位是Byte(字节)
图例:
那么,指针是什么呢???如图所示,指针就是该编号(也就是内存地址)
而用来存储指针的变量称为指针变量
代码示例:
#include <stdio.h>
int main()
{
int a = 10;
int* p = &a;
/*打印a的内容*/
printf("%d\n", a);
/*打印指针变量p的内容,但是以加前缀16进制显示*/
printf("%#x\n", p);
/*打印整数a指针的内容*/
printf("%p\n", &a);
printf("%#x\n", &a);
/*修改a的值,打印a的内容*/
*p = 20;
printf("%d\n", a );
return 0;
}
运行结果:
10
0x61fe14
000000000061FE14
0x61fe14
20
使用图来解释上述的运行过程:
cs