免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: shaohui973
打印 上一主题 下一主题

C语言指针问题,你想过没? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-12-22 11:32 |只看该作者
如果你会用汇编实现数组的话,这个问题应该不在话下了。

论坛徽章:
0
12 [报告]
发表于 2010-12-22 14:54 |只看该作者
注意指针和指针数组

论坛徽章:
0
13 [报告]
发表于 2010-12-23 10:43 |只看该作者
例: int a[3], int *p = a.
则(p+1) - p = 1.  但int占4个字节, 因此如果p = 0x0, 则p+1 = 0x4.  明白了吗?  指针的加减是与指针所指向的类型有关的.

那为什么你这里s[1] - s[0] = 10呢?.  首先要清楚s[1], s[0]是指针.  上面说指针的加减与指针所指对象的类型有关. 那么s[1]与s[0]是什么类型的指针?  s[1]和s[0]都是char * 指针, 因此指向的类型的字节大小为1, 故s[1]-s[0] = 10.

要是改成(s+1) - s,  其值依然为1.  因为s的指针类型是char (*) [10].  注意区别, 虽然s[1]和s+1的值相同但其类型是有区别的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP