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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值