现在也不记得是在那里看到这篇总结的,如果你是原创,麻烦跟我说下,希望不会有侵权之说。
在使用指针之前,我们必须观察它是如何声明的:
1,简单的例子:
int f; //一个整形变量
int *f; //一个整形指针
2,不简单的例子
int *f(); //一个返回整形指针的函数
int (*f)();//一个返回整形的函数指针
3,较复杂的例子
int *(*f)();//一个返回整形指针的函数指针
int *f[];//一个元素指向整形指针的数组
4,复杂的例子
int f()[];//一个返回数组的函数。但是这个是不对的,应为函数的返回值只能是标量,不能是数组。
int f[]();//一个数组,它的每个元素是函数。这个也是不对滴,因为数组要求元素的长度一样,函数不能保证。
5,最复杂的例子
int (*f[])();//f是一个数组,他的每个元素是函数指针,这个函数指针指向的函数是返回整形的。
int *(*f[])();//f是一个数组,他的每个元素是函数指针,这个函数指针指向的函数是返回整形指针的。
6,最最复杂的例子
int (*f)(int,char);//f是一个函数指针,指向想参数为(int,char)的函数,返回类型是整形。
int *(*f[])();//f是一个数组,元素是函数指针。指向的函数参数是(int,char)返回类型是整形指针。
在使用指针之前,我们必须观察它是如何声明的:
1,简单的例子:
int f; //一个整形变量
int *f; //一个整形指针
2,不简单的例子
int *f(); //一个返回整形指针的函数
int (*f)();//一个返回整形的函数指针
3,较复杂的例子
int *(*f)();//一个返回整形指针的函数指针
int *f[];//一个元素指向整形指针的数组
4,复杂的例子
int f()[];//一个返回数组的函数。但是这个是不对的,应为函数的返回值只能是标量,不能是数组。
int f[]();//一个数组,它的每个元素是函数。这个也是不对滴,因为数组要求元素的长度一样,函数不能保证。
5,最复杂的例子
int (*f[])();//f是一个数组,他的每个元素是函数指针,这个函数指针指向的函数是返回整形的。
int *(*f[])();//f是一个数组,他的每个元素是函数指针,这个函数指针指向的函数是返回整形指针的。
6,最最复杂的例子
int (*f)(int,char);//f是一个函数指针,指向想参数为(int,char)的函数,返回类型是整形。
int *(*f[])();//f是一个数组,元素是函数指针。指向的函数参数是(int,char)返回类型是整形指针。