1. 程式人生 > >C/C++_中NULL與空字串的區別

C/C++_中NULL與空字串的區別

今天遇到一個問題認識到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 相當於我沒有錢包