問題描述:指針與const限定符關係相關複雜,不同的組合就會有不同的意義,讓人很犯暈,下面總結一個很實用的識別方法。
示例:說出下面指針與const限定符結合後所代表的意義
1、const char *p
2、char const *p
3、char* const p
4、const char* const p
下面介紹一個簡單的判斷方法:
例1:首先我們從右往左看,寫成括號的優先級就是(const (char (*p))),由最裏面的括號可以知道p是一個指針,再到外面一個括號可以知道p是一個指向char類型的指針,再到最外面一個括號可以知道p是一個指向const char類型的指針。
例2:我們也是從右往左看,寫成括號的優先級(char (const (*p))),由最裏面的括號可以知道p是一個指針,再到外面的括號可以知道p是一個const型指針,再到最外面一個括號可以知道p是一個指向char類型的const型指針。
例3:寫成括號的優先級(char (*(const p))) ,由最裏面的括號可以知道p是一個const型變量,再到外面的括號可以知道p是一個const型指針,再到最外面一個括號可以知道p是一個指向char類型的const型指針
例4:寫成括號的優先級(const (char (* (const p)))),由最裏面的括號可以知道p是一個const型變量,再到外面的括號可以知道p是一個const型指針,再到外面的括號可以知道p指向的一個const char類型的變量。