C/C++_中NULL與空字串的區別
阿新 • • 發佈:2019-02-20
今天遇到一個問題認識到C/C++中 NULL 與 空字串 "" 是不相同的
總結如下:
空字串是"",會建立一個物件,內容是"",有記憶體空間。
而NULL,不會建立物件,沒有記憶體空間。
形象的比喻:
"" 相當於我的錢包裡沒錢
NULL 相當於我沒有錢包遇到的問題化簡如下:
利用strcpy進行字串的複製
strcpy不能用NULL作為源
程式崩潰:。。。。<strong><span style="font-size:24px;">#include <iostream> using namespace std; #pragma warning(disable:4996) int main(){ char a[100] = { 0 }; strcpy(a, NULL); return 0; }</span></strong>
而strcpy是可以把“”空串作為源的。
#include <iostream>
using namespace std;
#pragma warning(disable:4996)
int main(){
char a[100] = { 0 };
strcpy(a, "");
return 0;
}
測試一下NULL 與 “” 確實不同
#include <iostream> using namespace std; #pragma warning(disable:4996) int main(){ if (NULL == "") cout << "夢~" << endl; return 0; }
總結如下:
空字串是"",會建立一個物件,內容是"",有記憶體空間。
而NULL,不會建立物件,沒有記憶體空間。
形象的比喻:
"" 相當於我的錢包裡沒錢
NULL 相當於我沒有錢包