c++问题:char b[2][5]={"abcd","efgh"}; char *d[]={"M
答案:3 悬赏:0 手机版
解决时间 2021-11-21 05:33
- 提问者网友:风月客
- 2021-11-21 00:10
c++问题:char b[2][5]={"abcd","efgh"}; char *d[]={"M
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-11-21 00:16
#include
int main()
{
char b[2][5]={"abcd","efgh"};
char *d[]={"Monday","Tuesday","Wednesday"};
printf("%x,%x,%x
",d[0],d[1],d[2]);
return 0;
}
//482c90,482c84,482c78
//请按任意键继续. . .
为什么相差12,因为d在栈上分配的空间,栈移动是以字为单位(2字节)追问你好,又是你追答上次不是跟你说了,自己输出看看啊
非要刨到底的话建议还是去看看汇编追问第二个例子,字符串之间是不连续的哦?追答0x00482C78 57 65 64 6e 65 73 64 61 Wednesda
0x00482C80 79 00 00 00 54 75 65 73 y...Tues
0x00482C88 64 61 79 00 00 00 00 00 day.....
0x00482C90 4d 6f 6e 64 61 79 00 00 Monday..
0x00482C98 65 66 67 68 00 00 00 00 efgh....
0x00482CA0 61 62 63 64 00 00 00 00 abcd....
不知道是不是你理解的连续
int main()
{
char b[2][5]={"abcd","efgh"};
char *d[]={"Monday","Tuesday","Wednesday"};
printf("%x,%x,%x
",d[0],d[1],d[2]);
return 0;
}
//482c90,482c84,482c78
//请按任意键继续. . .
为什么相差12,因为d在栈上分配的空间,栈移动是以字为单位(2字节)追问你好,又是你追答上次不是跟你说了,自己输出看看啊
非要刨到底的话建议还是去看看汇编追问第二个例子,字符串之间是不连续的哦?追答0x00482C78 57 65 64 6e 65 73 64 61 Wednesda
0x00482C80 79 00 00 00 54 75 65 73 y...Tues
0x00482C88 64 61 79 00 00 00 00 00 day.....
0x00482C90 4d 6f 6e 64 61 79 00 00 Monday..
0x00482C98 65 66 67 68 00 00 00 00 efgh....
0x00482CA0 61 62 63 64 00 00 00 00 abcd....
不知道是不是你理解的连续
全部回答
- 1楼网友:末日狂欢
- 2021-11-21 03:32
啥玩意儿啊?这是你的主函数??追答main函数有问题追问没写main
- 2楼网友:街头电车
- 2021-11-21 01:54
C++的代码经过编写和编译后会产生二进制代码,但是不会再这个时候分配地址;地址是在运行的时刻动态分配的,你要地址,只能在debug时候看。追问字符串之间是不是连续的?我知道运行时,我没写主函数追答一个字符串内是从高到低这个和编译器的设计有关系追问第一个例子字符串之间是连续,但第二个不知是不是?追答设计原理上是,否则还得一一维护这些不连续的地址?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯