字符数组里存放整形,对数组名做加法

发布于 2022-10-15 07:37:06 字数 130 浏览 20 评论 0

例如char buf[4]={1,2,3}
char *p = buf+1
这里buf+1的话地址应该是增加数组类型的长度,也就是1位,但是里面数组成员的类型是整形,那么每个成员应该占4位内存?
那为什么p指针的内容是2呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

暮年慕年 2022-10-22 07:37:06

数组的成员类型其实是字符,只是显示的形式是整形罢了

窗影残 2022-10-22 07:37:06

字符可以说是小整形, 每一个字符都对应一个数值。 只是他们的显示方式不一样。

淤浪 2022-10-22 07:37:06

你那1,2,3就是当做char存的,再说你存什么也不能改变变量的属性

皇甫轩 2022-10-22 07:37:06

回复 4# sparkzh

    他的 1 2 3是当整数值存的 等于 '\1' '\2' '\3'

若水般的淡然安静女子 2022-10-22 07:37:06

buf+1

数组是具备指针特性的,buf+1就相当于将指向buf[0]的指针转移到数组的下一个元素buf[1]的操作。
所以 buf+1 == buf[1] 它的值自然就等于2了。

你可以将buf={1,5,3}试试看,结果应该会是5

薄荷→糖丶微凉 2022-10-22 07:37:06

回复 6# samkli


buf + 1 == &buf[1];
才对。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文