看到这段程序,你可能会想,指针c,d均指向字符串常量“abcdef”,即均为字符a的地址,所以他们相等,打印yes,我们看程序运行结果(VS2010):
是不是很奇怪,原因是这是在Debug调试版本下的运行结果,此时创建的两个指针,虽然均指向的是a的地址,但是他们的自身的地址不一样,所以不相等。调试查看一下:
现在我们切换Release发布版本再运行程序:
事实上,为了节省空间(可以节省一个指针大小的空间),系统会进行优化,让两个指针指向相同的同时存放地址也相同,即相等。
看到这段程序,你可能会想,指针c,d均指向字符串常量“abcdef”,即均为字符a的地址,所以他们相等,打印yes,我们看程序运行结果(VS2010):
是不是很奇怪,原因是这是在Debug调试版本下的运行结果,此时创建的两个指针,虽然均指向的是a的地址,但是他们的自身的地址不一样,所以不相等。调试查看一下:
现在我们切换Release发布版本再运行程序:
事实上,为了节省空间(可以节省一个指针大小的空间),系统会进行优化,让两个指针指向相同的同时存放地址也相同,即相等。