社区
C语言
帖子详情
菜鸟问题
rafter263
2003-01-13 03:40:22
main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d %d" , *(a+1), *(ptr-1) );
}
对&a+1不解,请大虾帮我说说!
...全文
28
7
打赏
收藏
菜鸟问题
main() { int a[5] = {1,2,3,4,5}; int *ptr = (int*)(&a+1); printf("%d %d" , *(a+1), *(ptr-1) ); } 对&a+1不解,请大虾帮我说说!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rafter263
2003-01-13
打赏
举报
回复
谢谢各位热心人!
熊主任
2003-01-13
打赏
举报
回复
楼上说得对,我没看仔细。用了&a就是把a当一个二维数组处理了,虽然是加1,但是性质变了,所以p - 1就变成了a的最后一个元素了!再次感谢楼上几位指出。
wangyong312
2003-01-13
打赏
举报
回复
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d %d %d %d" , *(a+1), *(ptr-1) ,a,ptr );
}
结果为: 2 5 1245036 1245056
a与ptr之间相差20个字节,因为每个int的字节数为4(在c++中)
bugfree
2003-01-13
打赏
举报
回复
&a+1 equal address +4byte, but ptr-1 equal address-1byte,
Look at the following code:
main()
{
int i;
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d %d\n" , *(a+1), *(ptr-1) );
for (i=0; i<5; i++)
printf("%x\t", (int) (&a + i) );
printf("\n%x %x %x", (int)&a+1, (int)ptr, (int) ptr-1);
}
[gdc5e46:(allanz)]>a.out
2 5
effff220 effff234 effff248 effff25c effff270
effff221 effff234 effff233
wangyong312
2003-01-13
打赏
举报
回复
a是一个数组,本来是一维的。
但是&a就是去a的地址,这时其实把a 看作了二维数组。
&a+1就是去二维数组a的第二行的首地址,
所以*(ptr-1)得到的就是数组a的最后一个元素,即5。
rafter263
2003-01-13
打赏
举报
回复
我在VC下编译运行后的结果是2 5呀!
熊主任
2003-01-13
打赏
举报
回复
对于数组来说a和&a是一回事,都是取数组首地址。所以ptr从a的第2个元素开始,输出结果应该是2, 1。
假设数组首地址为0x1000,机器工作与32位系统,1个int的大小为32位,那么a + 1所指向的地址就是0x1004,前面加个(int*)是强制类型转换,保证指向的是int类型的数据。
ThinkPHP5
菜鸟
必备之:微信扫码支付
微信支付是我们在做项目和网站或商城的时候经常遇到的一个
问题
,我从接触到熟悉,一步一个坑走过来,花费许多时间和精力,为了不让小伙伴们走弯路,特此录制本课程,这套课程是一个简易的购物微信支付的全过程,从...
Laravel
菜鸟
上路 - 踩坑 -
菜鸟
问题
1 - 配置文件.env 并非实时生效
Laravel
菜鸟
上路 - 踩坑 -
菜鸟
问题
1 - 配置文件.env 并非实时生效
问题
: rt 解决: php artisan config:cache 过程: 非常之痛苦……反复修改各种尝试, nnd新的数据库配置就是更新不上去, 访问的...
extern 报错【error c2146】
菜鸟
问题
error C2146: syntax error : missing ';' before identifier 'g_var' ...g_var前面的类型无法识别,这种
菜鸟
问题
,原来是应该在用extern CXX g_var; 之前,将CXX的声明告诉编译器。 不要忽视这些小
问题
。
phonegap/cordova
菜鸟
问题
汇总(不定期更新)
作为一个app
菜鸟
,phonegap/cordova小白,从零开始意味着要面临很多大神都一时想不到解决方法的
问题
——因为太诡异又太简单了。 下面是我经历过或看到的
问题
汇总。npm install -g phonegap/cordova因为网络
问题
安装...
计算机打不开
菜鸟
打印组件,
菜鸟
打印常见
问题
菜鸟
打印常见
问题
发布于:2016-09-22查看:67891次发布人:模板下载分享到:
菜鸟
打印常见
问题
解决方法:第一:打印只打印一半内容到打印机首选项里面设置纸张大小,宽10cm高18cm第二:打印不出纸,打印组件里面显示...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章