鱼C论坛

 找回密码
 立即注册
查看: 3212|回复: 10

地址还有指针表格之间关系的问题

[复制链接]
发表于 2019-3-18 04:05:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请大佬详细解答一下  弄不清什么时候四个字节什么时候一个字节啊



#include <stdio.h>
      int main()
      {
        int a;
        char c[4];
        int b;
        printf("adresse  b =%p\n",&b);
        return(0);
}

编译后得  adresse  b =0x7ffd901cdc8c 求c[1] 的地址是多少?   


------------------------------第二问----------------------------------------

#include <stdio.h>
int main() {
        int b[4];
        int a[4];
        b[/* 自行补充 */]=/* 自行补充 */;
        printf("a[0]=%d\n",a[0]);
        return(0);
}

编译后得 a[0]=50400  问 中间那行代码要怎么补充才能成功编译出结果


--------------------------第三问-----------------------------------------------

#include <stdio.h>
int main() {
        int b[4];
        int a[4];
        char *c;
        c=(char *)&(b[2]);

        c[/* 自行补充 */]=/* 自行补充 */;
        c[/* 自行补充 */]=/* 自行补充 */;
        c[/* 自行补充 */]=/* 自行补充 */;
        c[/* 自行补充 */]=/* 自行补充 */;
        printf("%d",a[0]);
return(0); }

编译后得 a[0]=257  问中间那4行代码要怎么补充才能成功编译出结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-18 11:46:56 | 显示全部楼层
本帖最后由 82457097 于 2019-3-18 12:04 编辑

1.int 型是四个字节 char是一个字节
2.b[-4]=50400;
3.c与a[0]差了四个int型数据 也就是偏移地址位4*6=24 c[-24]的地址应该与a[0]的地址一样 但是我改了c[-24]的值却改变不了a[0]的值

我也想知道答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-18 14:39:01 | 显示全部楼层
82457097 发表于 2019-3-18 04:46
1.int 型是四个字节 char是一个字节
2.b[-4]=50400;
3.c与a[0]差了四个int型数据 也就是偏移地址位4*6=24 ...

我看教学视频 没有 b【-4】 这种操作啊   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 16:57:19 From FishC Mobile | 显示全部楼层
我感觉这几道题就是在考内存分布和不同类型在内存中占的字节数 数组越界不总是错误的 有时候是可利用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 17:15:44 | 显示全部楼层
这是哪儿的题啊。。这种跨变量的位移实际编程的话并不总是和理论一致,因为内存管理的原因导致非常容易出错;除非你能确定汇编代码,不然这题目毫无意义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-18 19:50:42 | 显示全部楼层
是老师布置的题目  就是这种内存分布的 还有字节数的 题  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 00:41:52 | 显示全部楼层
顶一下§±±±±±
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 14:06:03 | 显示全部楼层
求大佬解疑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 20:06:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-20 04:24:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-26 11:23:21 | 显示全部楼层
我也是初学者,但我用的是vs2017,不知道和你的答案是否一致,我在调试中看过内存布局,连续申请的变量其实在内存上面是连续的,而且会有对齐,对齐的原理不理解。
下面是我的一个内存和代码截图,可以看到虽然是连续的但是VS提前就预留了一部分空间,所以说上面的题是基于各个编译器的,实际情况不一定。而且预留多少,是编译器的部分。你需要根据自己的编译器来解决,编写上面的代码,不然就是没有意义的问题。
QQ截图20190326111405.png QQ截图20190326110918.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 12:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表