注册 登录
编程论坛 C++教室

intel面试题目:字符数组指针

tfg0116 发布于 2008-10-28 21:08, 3085 次点击
请问大家char *ch = "abcd";这条语句有什么不好的地方?本人认为:c++对字符串常量是按字符数组处理的,
实际上在内存中开辟了一个字符数组来存放字符串常量,并将字符串的首地址(即存放字符串常量的字符数组的首地址)
赋给了字符指针变量ch。
17 回复
#2
blueboy820062008-10-28 22:18
你也没说出来有什么不好的地方啊...
C++好像最不提倡的就是指针和数组,就鼓吹的就是容器和迭代器...
这样想来,上面写法还是用string的好...个人意见...
#3
中学者2008-10-28 22:46
第一,字符串常量不能被修改..第二,不能做指针比较.我想第二点是关键,因为标准允许字符串常量为了优化而进行折叠,也就是说同一个指针可能指向两个字符串常量...
#4
tfg01162008-10-29 08:49
谢谢,我觉得这两点很关键
#5
sunkaidong2008-10-29 09:24
"第二,不能做指针比较.我想第二点是关键,因为标准允许字符串常量为了优化而进行折叠,也就是说同一个指针可能指向两个字符串常量..."没什么试过...
#6
随心2008-10-29 16:39
现在标准库我都不敢用了,前段时间完成的一项目里面大部分都用了标准库,在本地测试一切正常,但放到服务器上程序就挂了,没法启动.该装了都装了,该安的也安了,就是不行.最后把标准库代码全去了,代之以自己的代码,结果OK.
不知道你们有没有遇过这样的问题,反正我现在是不敢用标准库的.
#7
中学者2008-10-29 17:03
回复 6# 的帖子
你用的啥标准库??- -
#8
随心2008-10-29 17:10
C++的标准设施 vector 等,以及标准模板库STL
后来vector被数组代替,STL里的函数全部换成自己重写的
#9
随心2008-10-29 17:11
那程序我在很多机上了也试了,没装VS也的照样能跑起来,但放服务器上就不行了.可能是操作系统的问题.
#10
中学者2008-10-29 17:11
回复 8# 的帖子
-  -   应该没问题吧-  - 最好看看effective STL.
#11
随心2008-10-29 17:13
但就是不行,在新装的XP,2000,2003,VISTA上都试过了,都是可以的,但放他那台服务器上就完了.
#12
中学者2008-10-29 17:18
  飘过-  -
#13
nwpu0634172008-10-29 23:31
是不是改成const char *p = "abc";
就比较好了?
#14
braveboy20082008-10-31 00:15
上面的例子中为什么不能做指针比较啦?
#15
braveboy20082008-10-31 00:18
我没得没有必要字符串常量本身就不能修改
#16
ling1212112008-11-01 00:22
不能做指针比较嘛??
char* str1= "abc";
char* str2 = "abc";
这两个难道不能做比较嘛??
#17
vfdff2008-11-01 01:25
回复 6# 的帖子
能发现库的debug 也是不得了呀!!
#18
gumuyouye2008-11-02 01:38
来学习一下
1