C语言学习day11(指针)

 在刚开始学习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,那在游戏改变时,我用*来取用这个地址里对应金币数量的数值,再通过各种加减变化这个地址里的数值,就可以实现金币的获取与消耗了,同时也不会产生名称的冲突。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值