返回信息流char s1[] = "aaaaaaaa";
char *s2 = "bbbbbbbb";
aaaaaaaa是在运行时刻赋值的,bbbbbbbb是在编译时刻就确定的。
为什么?
谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #42549同步于 2010/8/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
字符数组和字符指针的问题
psSmile
2010/8/20镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
第一个不对
【 在 psSmile (淡淡红茶) 的大作中提到: 】
: char s1 = "aaaaaaaa";
: char *s2 = "bbbbbbbb";
: aaaaaaaa是在运行时刻赋值的,bbbbbbbb是在编译时刻就确定的。
: ...................
【 在 FadeToBlack 的大作中提到: 】
: 第一个不对
: 【 在 psSmile (淡淡红茶) 的大作中提到: 】
: : char s1 = "aaaaaaaa";
: ...................
不好意思,忘写中括号了,呵呵
我想应该是这样:
先说第二个,第二个是字符指针,而“bbbbbbb”是一个字符串常量,字符串常量的保存时在.data段,嗯,就数据段,而数据段的地址,在编译时,就可以确定了。
再说第一个,第一个是字符数组,嗯,如果确实没写在函数外面,也没加static的话,那么第二个是自动变量,它的位置,是在堆栈段,而堆栈段的地址,只有运行时才能确定。
可以去看深入理解计算机系统的链接一章=。=
唔,我说的没错吧?
【 在 zxsword 的大作中提到: 】
: 我想应该是这样:
: 先说第二个,第二个是字符指针,而“bbbbbbb”是一个字符串常量,字符串常量的保存时在.data段,嗯,就数据段,而数据段的地址,在编译时,就可以确定了。
: 再说第一个,第一个是字符数组,嗯,如果确实没写在函数外面,也没加static的话,那么第二个是自动变量,它的位置,是在堆栈段,而堆栈段的地址,只有运行时才能确定。
: ...................
.data段还是.rodata段?
应该说 s1 是运行时刻得到的 aaaaaaaa 不是
【 在 psSmile (淡淡红茶) 的大作中提到: 】
: char s1[] = "aaaaaaaa";
: char *s2 = "bbbbbbbb";
: aaaaaaaa是在运行时刻赋值的,bbbbbbbb是在编译时刻就确定的。
: ...................
【 在 zxsword (YNWA) 的大作中提到: 】
: 我想应该是这样:
: 先说第二个,第二个是字符指针,而“bbbbbbb”是一个字符串常量,字符串常量的保存时在.data段,嗯,就数据段,而数据段的地址,在编译时,就可以确定了。
: 再说第一个,第一个是字符数组,嗯,如果确实没写在函数外面,也没加static的话,那么第二个是自动变量,它的位置,是在堆栈段,而堆栈段的地址,只有运行时才能确定。
我觉得,s1是在运行时才获得的值,当然这个数组肯定是在栈里面的
而aaaaaaaa这个串可以是在常量区,运行时memcpy给s1,也可以在代码段,挨个赋值,这个
应该是由编译器决定的
: 可以去看深入理解计算机系统的链接一章=。=
: 唔,我说的没错吧?
【 在 zxsword 的大作中提到: 】
: 我想应该是这样:
: 先说第二个,第二个是字符指针,而“bbbbbbb”是一个字符串常量,字符串常量的保存时在.data段,嗯,就数据段,而数据段的地址,在编译时,就可以确定了。
: 再说第一个,第一个是字符数组,嗯,如果确实没写在函数外面,也没加static的话,那么第二个是自动变量,它的位置,是在堆栈段,而堆栈段的地址,只有运行时才能确定。
: ...................
thanks~~