c++ new與char*,動態陣列,sizeof的注意點總結
阿新 • • 發佈:2020-07-12
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; }