這件事在另一個關於SO的問題上有所涉及,但有些隨便,因爲它不是主要問題。由於我的困惑仍然存在,我正在另外提問。爲什麼{typedef int * PTR; const PTR p = #}不等於「const int * p = num」而是等於「int * const p = num」?
爲什麼下面的兩個語句相當於int* const p=&num
而不是const int* p=&num
當後者看起來更合乎邏輯和直觀時? typedef
這種行爲的嚴格原因是什麼?
typedef int* PTR;
const PTR p=#
最後,在這個問題一個成員的言論,這是不好的做法,使用typedef
版指針。但我已經看到它在很多書籍和網站中被廣泛使用,這似乎是一件很方便的事情。它使代碼更易於理解。那麼最後的話是什麼呢?應儘可能避免使用指針?
編輯:又會有怎樣爲typedef
說法正確的語法,如果我們打算以下幾點:
const int* const p=#
編輯:我無意中忘了問一件重要的事情。然後使用typedef
語句的正確語法是什麼?
const int* p=# //instead of the int* const p=&num that we got
我忘了添加2個重要的點。我已經將它們添加爲**編輯**,你可以好好研究一下嗎? – 2013-05-09 13:15:06
有指針類型的typedefs的一個原因是當你使用它們作爲API之外的不透明對象時。所以'struct foo_magic_structure; typdef my_magic_structure * foo_handle;'然後你的API在每個地方引用'foo_handle'。當然,這比C++更適用於C語言。 – 2017-01-26 13:06:28