1
A
回答
4
不同的是,第一個不編譯:
lol.cpp:2:10: error: cannot initialize a variable of type 'int *' with an rvalue of type 'int'
int *p1 = 10;
^ ~~
1 error generated.
而第二個使得與值10堆一個int,並分配一個指向堆棧上該值。
如果第一個沒有編制,說如果你增加了一個演員,它會是值10分配給指針p1
,這意味着p1
將指向內存地址10 = 0x0A
和*p1
會嘗試將該地址解除引用爲int,這將是段錯誤。 (如果你使用了一個不同的數字,碰巧在你的進程的內存空間中,它會是一些任意的整數,這取決於內存中的內容)
0
表達式int* p1 = 10
不應該編譯:它初始化一個指針用整數!
0
p1
和p2
是指向整數變量的指針。
p1
的初始化是錯誤的。作爲一個指針,它應該包含一個整型變量的地址。並且您將「地址」賦值爲「10」:您將其設置爲指向地址0x0000000A
,這幾乎肯定是無效的。
1
並根據您的問題的另一部分。不,他們不是都分配在堆上。實際上它們都被分配在堆棧上。只有第二個指向由new
運算符在堆上分配的區域。如果它們是分配給new
的對象的一部分,它們將被分配到堆上。
相關問題
- 1. 這兩個指針有什麼區別?
- 2. 這些指針解引用有什麼區別
- 3. 返回指針的這些函數調用之間有什麼區別?
- 4. 這些os.popen調用有什麼區別?
- 5. 什麼區別=指針
- 6. 指向指針的指針與C中指針的地址有什麼區別?
- 7. 這些POST命令有什麼區別?
- 8. 這些CIL語句有什麼區別?
- 9. 這些功能有什麼區別?
- 10. 這些選擇器有什麼區別?
- 11. 這些NGINX模塊有什麼區別?
- 12. 這些字符有什麼區別?
- 13. 這些GAE庫有什麼區別?
- 14. 這些PHP變量有什麼區別?
- 15. 這些授權API有什麼區別?
- 16. 這些LINQ查詢有什麼區別?
- 17. 這些意圖有什麼區別?
- 18. 這些查詢有什麼區別?
- 19. 這些代碼有什麼區別?
- 20. 這些#import聲明有什麼區別?
- 21. 這些在C++中有什麼區別?
- 22. 這些np.linalg.norm方法有什麼區別
- 23. 這兩個指針代碼有什麼區別
- 24. C:指針=變量和指針=變量有什麼區別?
- 25. 常量指針和整型常量指針有什麼區別?
- 26. 這些編譯器指令有什麼區別?
- 27. 使用結構指針和結構變量有什麼區別?
- 28. 使用OR的這些T-SQL查詢有什麼區別?
- 29. ,對象和指向對象的指針有什麼區別?
- 30. 在java中使用這些字符串有什麼區別嗎?
那是鏗鏘嗎?我祝賀你的優秀編譯器選擇:) +1,因爲它也是正確的。 – delnan 2012-03-03 21:32:42