C语言描述变量类型

C语言描述变量类型

方法:

先来看一个变量的声明:

int (*(*a)())[6];

大家会不会觉得这个有问题呢?可以通过编译哦。

好了,现在开始上干货
一个声明可以这样表示:

类型 表达式;

方法:通过计算表达式来确定类型。变量经过表达式的运算,得到了声明前面的类型,以此,来推断变量类型。
是不是还是一脸懵,从简单的开始

int a;//这个声明没啥好说的
int *a;// 表达式是*a,通过*a(间接引用),得到了int型,所以a是一个整型指针
int **a;//经过两次间接引用,所以a是二级指针

int *a();//声明函数  

把()当作函数调用,很显然,a就是一个函数

int (*a)();

先间接访问引用a,然后调用函数,得到整型,所以a是一个“返回值为整型的函数的函数指针”

int **(*a[6])();

a是一个指针数组,然后经过调用函数,返回二级指针,所以a的类型描述为“a是指向返回值为二级指针的函数指针数组”

int (*(*a)())[6];

a是一个函数指针,返回的值经过间接引用之后是一个整型数组,所以a的类型描述为“a是指向返回值为int型数组的指针的函数指针”

猜你喜欢

转载自blog.csdn.net/qq2071114140/article/details/88044471