目录

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 会被忽略