您的位置:首页 > 其它

指针指向空字符串和指针赋值为NULL的区别

2014-04-15 19:32 239 查看
今天刷题,遇到一个很模棱两可的问题:一个指向空字符串的指针与赋值为NULL的指针有区别吗?

现通过程序来检验一下这两者的区别:

#include <iostream>

using namespace std;

int main()
{
char *p, *q;

p = NULL;
q = "";
if(q == p)
cout << "Hello world!" << endl;
else
cout << "bad!"<<endl;
return 0;
}


输出的结果为:bad!。这通过程序调试很容易理解,程序会为每个初始化的指针赋值。下面是我在自己的机器上调试的情况:



可以看到指针p指向的地址为0x0,而q指向的的地址是0x403064。两个指针的值明显是不同的,而且通过测试可知,所有指向NULL的指针的值都是为0x0,这里q虽然是指向空串,但是程序还是为空串分配了内存地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: