一个关于C语言指针的选择题

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:18:26
这是2005年浙江省公务员(机关工作人员)考试计算机专业的一道选择题,请高手帮忙看一下选哪个?(麻烦帮忙解释一下,谢谢)
50.在C语言中,若有int(*a〔10〕(),f();则合法的表达式有:
A.**(a+i)()
B.(**(a+i))()
C.*(a+i)=f
D.a〔i〕=&f
这是从网上搜索到的,感觉题目中的int(*a〔10〕(),f();有一定的问题,但是从网上没有找到别的。

括号不匹配啊,当然有问题.
应该是int(*a[10])(),f();
a是一个长度为10的指针数组,每个元素都指向一个int()型的函数.
这样的话,只有A是错的.因为()优先级比*高,所以(a+i)()先凑成表达式,而a+i只是a[i]的地址,后面加()肯定出错.
B是执行a[i]指向的函数
C,D是让a[i]指向函数f

括号都少了个啊不匹配啊老大。

好像不能运行的样子,会编译出错的

error