C语言指针、数组和函数的一些总结

mac2022-06-30  71

主要来自于孟宪福老师的分布式对象课程。

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

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)