how to read c declarations
目录
How To Read C Declarations
第一步,找到变量名,如果没有变量名,找到最里面的结构
第二步,向右看,读出你看到的东西,但是不要跳过括号
第三步,再向左看,读出你看到的东西,但是也不要跳过括号
第四步,如果有括号的话,跳出一层括号
第五步,重复上述过程,直到你读出最终的类型
int *v[5];
// v是一个数组,数组中存放指针,指针类型是int
int (*v)[5];
// v是一个指针,指针指向数组,数组存放int
int func();
// func 是一个函数,函数返回 int
int (*func)();
// func 是一个指针,指针指向函数,函数返回 int
int (*v[])();
// v 是一个数组,数组存放指针,指针指向一个函数,函数返回 int
int (*(*v)[])();
// v是一个指针,指针指向数组,数组存放指针,指针指向函数,函数返回 int
1 const
分析同上
底层 const
const int *i;
// i是一个指针,指针指向 const int
int const *i;
// 同上,i 是一个指针,指针指向 int ,int 是 const
顶层 const
int * const i;
// i 是const,i 是一个指针,指针指向 int
两层 const
const int * const i;
// i是 const,i 是一个指针,指针指向 int ,int 是 const
ps:函数调用时候,有些情况下,顶层 const 会被忽略