考慮char firstLetter=word[0];
,除了將它用作糖以提高可讀性外,您不會對firstLetter
執行任何操作。除#define
之外是否還有其他內容可以創建內聯「別名」而不是分配新內存?我知道一個腳本可以寫,但如果已經存在...用於糖語法的別名而不是新變量
0
A
回答
0
如果問題真的爲關於C++,你可以隨時創建對象的別名:
char& firstLetter=word[0];
這將使firstLetter
和別名爲word[0]
(假設word
是一個數組,而不是指針稍後改變)。
+0
這就是我一直在尋找的東西。謝謝,博。對於任何閱讀本文的人來說,我也發現C++ 11中的constexpr用於相似但不完全相同的目的。 – user1420741
1
這裏沒有內存分配;可以將word[0]
的值複製到寄存器或堆棧中,但是編譯器是否需要這樣做。
請注意,「內聯別名」會導致更糟的代碼被生成;表達式word[n]
意味着一些計算,如果您使用某種替換,則會重複多次。
+0
那麼,除非編譯器執行常見的子表達式刪除並計算一次地址。它可能會做得很好(除了'volatile'之類的令人討厭的東西外)。這不是效率問題。 – delnan
相關問題
- 1. 修改參考變量,而不是變量,他們別名
- 2. 在Select語句中使用變量名而不是表名
- 3. 更新變量時的語法糖串連接
- 4. 使用變量而不是長語句?
- 5. 應用於對象屬性的變量的值而不是變量名稱
- 6. 語法糖方法的命名約定
- 7. 值是變量名稱而不是變量的內容
- 8. JavaScript自定義變量語法而不是var使用$
- 9. 是build_語法糖嗎?
- 10. 關於變量的語法
- 11. SPSS語法 - 基於3個變量的新變量
- 12. Python:變量名是'語法錯誤'
- 13. R:變量使用變量名稱而不是值
- 14. MySQL語法 - 變量的標準偏差,而不是列
- 15. 打印出GLOB(),而不是變量名
- 16. 發佈變量值而不是變量的名稱
- 17. javascript變量包含而不是等於
- 18. 變量「:」而不是「=」
- 19. 使用void作爲語法糖來防範隱式全局變量,是或否?
- 20. 變量別名
- 21. 修改原始變量而不是創建新變量的Python
- 22. 語法的別名
- 23. R:使用ggplot調用中變量的賦值而不是變量名稱
- 24. Perl的TR操作是基於變量的名字而不是它的價值
- 25. '同步'真的只是語法糖嗎?
- 26. PHP:使用變量值變量名:好奇的語法問題
- 27. 調用PHP類的方法使用變量,而不是實際的函數名
- 28. 模塊中的變量而不是通用語句
- 29. IF語句中的所有變量增量而不是一個
- 30. MySQL變量/別名不可用
C++或C(或兩者)?這兩種語言的答案(及其便利性)各不相同。 – delnan
C++主要是.. – user1420741