免费注册 查看新帖 |

Chinaunix

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

数组名字和数组取地址的区别 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-07-30 10:33 |只看该作者
原帖由 choki 于 2007-7-30 10:15 发表


想在结构里面对元素以偏移取地址
应该以第一个元素为起址的
比如
struct   aa{
int a;
char b;
double c;
}xxx;
对元素b赋值,可以试试
memcpy(xxx.a+sizeof(int),'x',1);
具体没测试,不知道会不 ...



准确地说应该是

  1. memcpy((void*)&xxx + sizeof(int), "x", 1);
复制代码

或者是

  1. memcpy((void*)&xxx.a + sizeof(int), "x", 1);
复制代码

因为地址是加sizeof(int). 如果前面不进行强制的类型转换的话地址增加的就不是sizeof(int)了. 而是它的类型的长度*sizeof(int)这么多了.

论坛徽章:
0
32 [报告]
发表于 2007-07-30 13:26 |只看该作者
原帖由 choki 于 2007-7-30 10:15 发表


想在结构里面对元素以偏移取地址
应该以第一个元素为起址的
比如
struct   aa{
int a;
char b;
double c;
}xxx;
对元素b赋值,可以试试
memcpy(xxx.a+sizeof(int),'x',1);
具体没测试,不知道会不 ...

这样是不对的,xxx.a为值,在加上int 长度是什么?
楼上写法是对的,但是好像在实际中没有这样用的.

论坛徽章:
0
33 [报告]
发表于 2007-07-31 15:24 |只看该作者
原帖由 yuangong 于 2007-7-30 13:26 发表

这样是不对的,xxx.a为值,在加上int 长度是什么?
楼上写法是对的,但是好像在实际中没有这样用的.



yes

是应该加取地址符号

基础不好 没注意 呵呵

因为我用这个的环境 xxx结构里面都是char [ ]

感谢指正
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP