指针存储数组 C

前言

C语言的指针在理解之后是非常容易且方便的,但是之前总是编译通过就走了并没有关注warning,学习c++之后因为对指针的使用要求更加严格了一些,之前的不规范指针使用就慢慢暴露出来。


一、如何用指针存数组

数组和函数都表示着一串数据或一条操作的首地址,那么就可以用指针来表示。但具体用什么类型,用几级指针之前我都是囫囵吞枣能跑就行。因为用*a可以来表示一个数组,让我一直以为二维数组是完全可以用**a来表示的,在力扣平台上这样也确实常常能完成题目,但在编译器上一跑很快就能发现**a并不能完成二维数组的功能。这是因为他漏掉了一个很重要的特性:指针+1之后指向新的位置是不同的。这里以a[3][4]举例,正确的写法应该是*a[][4]对于前者+1只跨越sizeof(int)的距离,而后者是4*sizeof(int),他就可以完成二维数组的功能。但若只是存储一个二维数组,你用int *甚至是char*都是可以的,因为他们前面的类型也只代表着他们+1跳过的距离,并不影响他们存储一个首地址

二、指针使用时C与C++的差别

既然随便一个指针都能表示我的数组函数等,那我上面岂不是在说废话吗?注意上面的用法除了正规的写法其他都是会warning的,但是C语言为了方便程序员想在任何时候方便的查找到地址,允许程序对于地址的类型只是决定着该地址每次+1跨越的距离,而没有限制他存什么东西c++在这一方面更加的严格,你会发现你类型不匹配或者是指针的级数不对你都是跑不了代码的,认识正确书写指针的格式还是非常重要的!


总结

以后要学习c++的新手们一定要注意平时书写指针的规范,对于一个指针的应用写的好是能让你事半功倍的,指针的类型方面也要灵活的调整,让整个程序可以执行的非常的灵活。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康来个程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值