首页 > 代码库 > NULL与""空字符串的区别
NULL与""空字符串的区别
""空字符串,会创建一个对象,分配内存空间
NULL,不会创建对象,不会分配内存空间,意思是不存在的
#include <iostream> using namespace std; int main() { std::string strTemp; if( strTemp.empty() ) { cout<<"is empty "<<endl; } else { cout<<"is not empty"<<endl; } strTemp = ""; if( strTemp.empty() ) { cout<<"is empty"<<endl; } else { cout<<"is not empty"<<endl; } if( strTemp == "" ) { cout<<"is empty"<<endl; } else { cout<<"is not empty"<<endl; } /* if( strTemp == NULL ) { cout<<"is empty"<<endl; } else { cout<<"is not empty"<<endl; } */ return 0; }
在以下代码最后,用NULL与字符类型进行比较,会直接导致编译错误!
test.cpp:37:17: error: no match for ‘operator==’ in ‘strTemp == 0’
从编译的错误提示看:NULL为数值0
#include <iostream> using namespace std; int main() { if( NULL == 0 ) { cout<<"NULL is number 0"<<endl; } else { cout<<"NULL is not number 0"<<endl; } int nNum; cout<<"nNUm = "<<nNum<<endl; nNum = NULL; cout<<"nNUm = "<<nNum<<endl; cout<<static_cast<void*>(NULL)<<endl; return 0; }
从这段代码,进一步验证了,NULL对就的值为数值0,地址为空
注意:将NULL赋值为int变量时会报警告
NULL.cpp:18:9: warning: converting to non-pointer type ‘int’ from NULL [-Wconversion-null]
本文出自 “点滴成长” 博客,请务必保留此出处http://xdataplus.blog.51cto.com/3614757/1893417
NULL与""空字符串的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。