typedef char* c;
const c ptr1 = "pointer";
++ptr1; /// error
const char* ptr2 = "pointer";
++ptr2; /// runs fine
Run Code Online (Sandbox Code Playgroud)
现在ptr1应该是类型const char*,因此是非const指针,那么为什么它被视为常量指针?
Seb*_*ach 13
他们不一样.
第一个指定const-pointer-to-char,第二个是指向const-char的指针.
尝试从右到左阅读:
const char *p; // p is a pointer to char which is const
char const *p; // p is a pointer to const char (same as previous)
char * const p; // p is a const pointer to char
char const * const p; // p is a const pointer to const char
Run Code Online (Sandbox Code Playgroud)
通过使用typedef,typedef char* c您可以将"指向char的指针"包含在一个别名中c:
const c p; // p is a const [c] --> p is a const [pointer to char]
Run Code Online (Sandbox Code Playgroud)
补充说明:
Typedef不像宏那样就地扩展,即
const c p;
Run Code Online (Sandbox Code Playgroud)
真的变成了
const [char*] p;
Run Code Online (Sandbox Code Playgroud)
它并没有成为
const char* p; // Nope.
Run Code Online (Sandbox Code Playgroud)
不要展开它就像在你的心中宏,与类型定义,你必然char和*在一起,形成一个原子.
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |