关于指针数组指针做为返回类型的函数
2011-05-19 09:56
399 查看
今天被一哥们叫了看了一段程序。
里面有这样一段代码:
C/C++ code
int * (*func(int n))[3];
反应如下:
这是一个数组。
这是一个指针数组。
这是一个函数指针数组。
到后面又看到然后有这样的用法:
C/C++ code
func(n_temp);
这难道是一个函数???
那么[3]又表示什么呢。
然后就分析了下。
后来才发现原来()的优先级比*高。
那么这是一个函数指针的想法肯定是错的。
下边写下午简单的分析。
int func(int n);
这当然是一个函数(具有一个int型参数)。
int (*func(int n));
这是一个具有一个int型参数,并且返回值是一个指针的函数。
int (*func(int n))[3];
这又是什么意思呢?
先看
int (*arr)[3];
arr是指向 具有三个整型元素数组的指针。
那么
int (*func(int n))[3];
是一个函数指针数组?没这种说法。
是一个数组指针函数?好像还是不对。。。
因为c/c++里面不允许返回数组的。
所以只能是返回类型是一个数组指针。
那么:
int * (*func(int n))[3];
这是一个具有一个int型参数,并且返回值是一个指向数组的指针。
而这个数组又是具有三个int指针元素的数组。
函数返回指针是没问题的,数组指针、函数指针等都行
返回数组、函数则不行
仅供聊资。。。。表骂人。
里面有这样一段代码:
C/C++ code
int * (*func(int n))[3];
反应如下:
这是一个数组。
这是一个指针数组。
这是一个函数指针数组。
到后面又看到然后有这样的用法:
C/C++ code
func(n_temp);
这难道是一个函数???
那么[3]又表示什么呢。
然后就分析了下。
后来才发现原来()的优先级比*高。
那么这是一个函数指针的想法肯定是错的。
下边写下午简单的分析。
int func(int n);
这当然是一个函数(具有一个int型参数)。
int (*func(int n));
这是一个具有一个int型参数,并且返回值是一个指针的函数。
int (*func(int n))[3];
这又是什么意思呢?
先看
int (*arr)[3];
arr是指向 具有三个整型元素数组的指针。
那么
int (*func(int n))[3];
是一个函数指针数组?没这种说法。
是一个数组指针函数?好像还是不对。。。
因为c/c++里面不允许返回数组的。
所以只能是返回类型是一个数组指针。
那么:
int * (*func(int n))[3];
这是一个具有一个int型参数,并且返回值是一个指向数组的指针。
而这个数组又是具有三个int指针元素的数组。
函数返回指针是没问题的,数组指针、函数指针等都行
返回数组、函数则不行
仅供聊资。。。。表骂人。
int *fun() { int a[100]; return a; } int main() { int *p; p=fun(); return 0; }
相关文章推荐
- 关于函数返回值为指针类型的分析
- 关于函数返回值为指针类型的分析
- 杂货边角(13):利用可变参数模板根据函数指针得到返回值类型和形参类型
- 关于函数指针数组与返回数组指针的函数
- 返回函数指针类型的函数
- 关于static与返回指针的函数
- 转:关于函数指针数组与返回数组指针的函数
- 2011.12.3返回类型为指针的函数
- 指针类型学习总结(函数指针、数组指针和指针数组)
- 函数返回类型为指针类型时的一些问题
- 数组指针和指针数组以及二维数组的函数间传递与返回
- 函数返回指针类型与函数的可重入性
- 函数的返回类型为指针类型时的若干思考(字符串常量问题)
- 函数返回引用和指针类型
- 函数返回引用和指针类型
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 函数指针,返回类型为函数指针
- 如果从函数中返回局部变量的地址,引用或者指针的形式,则变量类型必须是静态的或者常量,即不在栈中存储
- C/C++—— 写一个函数,它的参数为指向函数的指针,返回类型也为指向函数的指针
- 数组指针、函数指针和尾置返回类型