主要来自于孟宪福老师的分布式对象课程。
int a[7][8]; // a指向 a-->a[0]-->a[0][0] a[0]是第0行一维数组 // a + i --> a[i] --> a[i][0]
a[i][j]; // 等价于*( *(p + i ) + j)
定义一个函数返回7*8的数组a
int ( *f () ) [8] { int a[7][8]; return a; }
总结起来就是:
1. 从标识符开始 a. 定义数组,数组的元素是什么? b. 定义函数,函数的返回值是什么? c. 定义指针,指针指向谁?
2. [ ] 和 ( )的优先级大于 *
char f1(int x) { } char (* b[]) ( int ) = {f1, f2, f3} b[0] = f1; b[1] = f2; b[2] = f3; char x = b[0](10); char y = b[1](20);
一些例子:
int f()[5]; // f是一个函数,函数返回一个数组,错 int f()();//f是一个函数,函数返回一个函数,错 int (*f())[5]; //f是一个函数,函数返回一个指针,指针指向一个有五个元素的数组 int a[6]();// a是一个数组,数组元素是一个函数,错 int (*a[6] ) (); // a是一个数组,数组的元素是指针,指针指向返回类型是int的函数
最后一个例子:
float f(int x) { } float (* func ()) ( int ){ return f;} float (*p) (int ); p = fun(); float f1 =(*p)(5);
原文地址:https://www.cnblogs.com/vincent93/p/9162436.html
时间: 2024-10-09 14:02:15