晚上被問到乙個c++的問題:
int **pa=new int* [5];
int *pb=new (int*)[5];
上面兩行**的差別是什麼?
分析與實驗結果例如以下:
(1)第一行**能夠在vs2010上正常執行,new出來的是乙個存放int型指標變數的陣列。能夠存放5個這種元素。
而第二行**則編譯錯誤。悲劇的是vs2010在編譯之前並未紅線提示錯誤。
(2)設計了例如以下兩行**,當中第一行正常,第二行提示錯誤,沒有定義的pbb識別符號,猜測加括號後未體現型別的作用,故pbb仍沒有定義。
int* paa[5];
(int*) pbb[5];
(3)經過第二步,基本確定(int*)不再是型別,而是將某物件進行強制型別轉換。
在查閱操作符優先順序的過程中。發現new的優先順序要低於型別轉換操作符的優先順序,故更加確定原問題第二行**的(int*)會優先執行,不再是int*型別。
INT 10 與INT 11 的區別
你是不是以為int 10 會比 int 11 省空間!那你就大錯特錯了 首先看一下定義 int m m指示最大顯示寬度。顯示寬度與儲存空間大小或型別包含的值的範圍無關,只是顯示寬度,那有啥用呢?其實主要用於固定其顯示長度,例如 時間戳是十位,可以定義int 10 讓其固定10位 md5密碼是32位,...
有關 int 和 int 的區別
先看一段程式?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 include stdafx.h include usingnamespacestd int tmain intargc,tchar argv...
有關 int 和 int 的區別
先看一段程式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 include stdafx.h include usingnamespacestd int tmain intargc,tchar argv...