1. 程式人生 > 實用技巧 >c++ new與char*,動態陣列,sizeof的注意點總結

c++ new與char*,動態陣列,sizeof的注意點總結

1. 關於"eng" 與其他型別在new時的不同點:

#include<iostream>
#include<string>

using namespace std;

int main() {
	
	/*char* lang = "eng";
	cout<<lang<<endl;*/ ok的,因為會給編譯器會給"eng"自動分配資料儲存空間,並返回字串的首個char的地址(資料與地址關聯)。並且由於cout及其他表示式看見字串的char的首地址後,會讀取整個字串,直至遇到"\0"為止。

	int* ptr = 10;
	cout<<*ptr<<endl;//沒有初始化資料儲存空間,所以會報錯

	return 0;
}

2.

#include<iostream>
#include<string>

using namespace std;

int main() {
	char flower[10] = "rose";
	cout<<flower<<"s are red\n"<<endl;//cout及多數c++表示式中,char陣列名,char指標以及用""括的字串常量都被解釋為字串的第一個字元的地址,並且由於cout及其他表示式看見字串的char的首地址後,會讀取整個字串,直至遇到"\0"為止。
return 0; }