首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

两个指针指向雷同的字符串,为啥,指向的是同一个字符串。

2013-08-09 
两个指针指向相同的字符串,为啥,指向的是同一个字符串。。。[解决办法]莫非编译器优化了[解决办法]在BCB里面

两个指针指向相同的字符串,为啥,指向的是同一个字符串。。。


[解决办法]
莫非编译器优化了
[解决办法]
在BCB里面上面四个都是false,在VC.NET里面str5=str6=str7=str8
[解决办法]
你关掉全部编译器优化,就不会如此了。
CB的话是有一个编译开关,是否合并重复的常字符串的。其他编译器就自己看看开关是什么。
当关掉全部编译器优化,是不会执行这个优化的。
[解决办法]
只能说编译器的机理不一样
[解决办法]
编译器的选项中可以决定是否合并重复的字符串,C++Builder6.0中,这个选项默认是关闭的,也就是不进行合并,可以自己打开这个选项试试:
Project-->Options-->Compiler-->Compiling-->先中 Merge duplicate strings 前面的对钩。

结果是:
false
false
true
true
[解决办法]
2010默认也是false呐。
string还有另外两个选项:read-only strings, writeable strings也是false. 
c++ compiler : advanced
[解决办法]
学习一下

两个指针指向雷同的字符串,为啥,指向的是同一个字符串。
[解决办法]
5、6、7、8是字面值常量,存放在代码区,是不能修改的,“abc”本身就是一个地址,然后你在栈区定义了四个指针都是指向同一个地址,指针比较的时候比较的是指针存放的地址,而不是指针本身的地址,当然5、6、7、8都是一样的值。同时字符数组呢,是存在栈区,四个数组变量,每个变量比较的都是数组的首地址,四个不同的变量当然地址不一样啊。

热点排行