在刚开始学习C语言时,我认识了各种数据类型,比如int整型,float单精度浮点数,char字符等等,而指针也是一种数据类型。这些数据类型都有对应的存储格式,比如int是4字节,也就是32个比特位,而char只有1字节的空间,对应8个比特位。
这里一个比特位只能用0或1来表达,而字符则需要使用到之前的ASCAII码表来进行对应的转化。
说到指针,内存相当于一列表格而每一格就是一个字节的空间。

而这些格子都有各自的编号,这些编号就是对应存储空间的地址,指针就是这么一种存放地址的变量。基于之前不同数据类型所需要的内存空间不同,每一个格子就是一个编号,所以char类型的数据地址只有1个地址编号,而int类型的数据的地址就有4个地址编号。
我逐渐明白了指针的含义,就像它字面上所说的,像导航一样指向我们需要的内存地址,调用空间中的内容。
这里在代码中出现了void
void test01()
{
int num = 100;
printf(“%p\n",&num);
int *p = NULL;
printf(“sizeof(p) =%d\n",sizeof(p));
}
这里的void是无类型指针,可以指向任何的数据类型,也不要返回,所以可以用来在程序中进行测试,而不需要更换主函数中的内容来不断调试。只需要在主函数中更换test123即可。
int*p是指针这一数据类型定义时的格式,在取地址时用到符号&,在取地址里面内容时用到的就是*,这里的*是一个运算符而不是指针变量的一部分。
关于指针,这里只进行了初步的理解,也埋下了许多的伏笔,比如每一格个指针变量也被存储在计算机中,那它也有对应的地址,可以被另一个指针所指向。而在实际应用中,指针通过内存的地址与数据进行关联,可以让数据的调用更加方便。比如在游戏里,我设定玩家的拥有金币,而金币是随着玩家的操作进行整数级的不断变化,那我将金币这一数值对应到一个固定的地址里,这个地址里的数据类型为long,那在游戏改变时,我用*来取用这个地址里对应金币数量的数值,再通过各种加减变化这个地址里的数值,就可以实现金币的获取与消耗了,同时也不会产生名称的冲突。
本文介绍了C语言中的基本数据类型如int、float和char,以及它们在内存中的存储格式。重点讲解了指针的概念,指针作为存储内存地址的变量,用于直接访问和操作内存中的数据。通过一个简单的void类型的函数示例说明了无类型指针的使用,并探讨了指针在实际应用中的作用,例如在游戏开发中如何利用指针动态地修改数据,如玩家的金币数量。最后,文章提及了指针变量自身的地址和指针操作的*运算符。
1284

被折叠的 条评论
为什么被折叠?



