int(*ptr)*()怎么理解?

[复制链接]
查看11 | 回复3 | 2016-9-14 10:07:02 | 显示全部楼层 |阅读模式
先声明写成这样int(*ptr)*()是错误的,遇见这样的问题,不用怕一步一步分析就出来了:1.在上面的表达式中从左到右有四个运算符()、*、*、()2.运算符的优先级()比*高,()的结合方向是自左到右,*的结合方向是自右到左3.对于上面的表达式是先运算(*ptr),这是定义了一个指针变量ptr,指向什么类型呢?看下面4.下来再运算下一个小括号(),是一个函数5.接下来运算*(),对于这样的运算C编译器是无法解释的,所以int(*ptr)*()是错的。但是,写成int * (*ptr)()这样,这个表达式就是正确的,看分析1.和上面一样同样是四个运算符,但是放置顺序不一样,从左到右是*、()、*、()2.由于小括号...
回复

使用道具 举报

千问 | 2016-9-14 10:07:02 | 显示全部楼层
首先,int(*ptr)*()这句话是错误的。int(*ptr)():ptr是一个函数指针,这个函数指针直线一个参数为空、返回值为int的函数。...
回复

使用道具 举报

千问 | 2016-9-14 10:07:02 | 显示全部楼层
定义错误,无法通过编译;int(*ptr)()表示ptr是一个函数指针,指向一个返回int类型的函数:参考下面的代码:int fun(){return 100;}int (*ptr)();int main(){ptr=&fun;}...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行