学C之初的一个问题 关于字符串的 请教各位高手·。。
貌似这个问题有些无聊。。请见程序
程序代码:
#include <stdio.h> int main(void) { char *a = "ASDFGHJ"; char *b = "ASDFGHJ"; printf ("a=%lx b=%lx\n",a,b); return 0; }
比如这个程序 我用gcc 默认参数编译 输出 a 和 b 是相等的
请问 是任何编译器的任何模式都是这种结果么 C语言的标准里面 对这个是怎么设计的呢
是【一定】相等 【可能】相等 还是【不应该】相等 呢
求指点 谢谢。。
/****************************************我只是分割线********************************************/
把我的感谢放在下面就埋没了 对不起各位。。
在这里感谢所有回复的人 你们的回复是我前进的动力
特别要感谢孔明等前辈的回复
分按照我的理解给的 每人都有。。
/****************************************我只是分割线********************************************/
我的结论 希望各位继续批评
1 此问题编译器相关 不同编译器实现不同 讨论意义不大
2 对于C语言中字符串的比较必须采用strcmp等函数实现 但在特定情况下 直接比较 即 "ASDF" == "ASDF" 是可能的
3 尽管有这种特性 也应该尽量避免采用这种模棱两可 或者说是没有规定的东西
4 有些书采用 "ASDF" != "ASDF" 来论证必须用strcmp比较字符串的做法是错误的
结束 再次感谢所有人
[ 本帖最后由 zklhp 于 2011-3-3 15:55 编辑 ]