字符串常量比较问题
1.
char *str = "hello";
return str == "hello";
2.return "hello" == "hello"
请教一下,为什么这两种情况下返回的结果都是1?
[解决办法]
这个问题的关键在编译器对字符串常量的处理,如果编译器没有做优化每个常量在程序的数据段(常量区)有自己的内存。这两个例子里,比较的是什么要看数据类型,所有这些变量、常数的数据类型都是指针(地址),所以如果编译器没做优化结果都是false(即0),如果有优化则要看优化算法(优化程度),最好的优化是几个指针指向同一个常量,这时两个比较的结果都是true(即1)。从另外一个方面看,你可以用这两个比较来简单了解你用的编译器对字符串常量的优化情况。