int*与(int*)的差别
生活随笔
收集整理的這篇文章主要介紹了
int*与(int*)的差别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
晚上被問到一個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*与(int*)的差别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鼠标滑过,解决ul下 li下a的背景与父
- 下一篇: 缓存机制与局部性原理