關於Const char* 和 Const char** 以及 char ** const

頂層和底層的翻譯很容易讓人誤解爲就只有兩層,實際上當然是不是的。首先我們假設有這樣的代碼:

template<typename T> using Const = const T;
template<typename T> using Ptr = T*;

然後

const int *** const shit = nullptr;

要怎麼看呢?很簡單,不要用const和*,用Const和Ptr來表達,馬上明白:

Const<Ptr<Ptr<Ptr<Const<int>>>>> shit = nullptr;

一秒學會



作者:vczh
鏈接:https://www.zhihu.com/question/24785843/answer/238903938
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

加上自己的理解,這種const T ***** p 或者  T***const *p 怎麼理解?

從右往左,分別是最上和最底。

比如const T*** 表示的是  一個指針的指針的指針,指向的是什麼呢,是一個const T。

而  T****const * 表示的是什麼,一個指針指向了一個不能更改指向的指針。這個指針指向的是什麼呢?是一層層最終到T的。T是可改的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章