计算机二级c疑难题
(33)设有以下函数:voidfun(intn,char*s){……}则下面对函数指针的定义和赋值均正确的是A)void(*pf)();pf=fun;B)void*pf(...
(33)设有以下函数:
void fun(int n,char *s){……}
则下面对函数指针的定义和赋值均正确的是
A)void (*pf)( );pf=fun;
B)void *pf();pf=fun;
C)void *pf();*pf=fun;
D)void (*pf)(int,char);pf=&fun;
以上是2009年9月二级c真题,答案是A
B、C错了自不用说;困扰我的是A/D项,先说D项,语句void (*pf)(int,char);是不是应改为void (*pf)(int,char*);二个pf=&fun;应为pf=fun;很明显!
这样一来单选应选A,但是定义指向函数的指针,括号里不用带参数表列吗???
本人现用谭浩强先生的著作都没有 A)void (*pf)( );pf=fun;这样的定义。
望各位高人大虾指点迷津!!!!!!!! 展开
void fun(int n,char *s){……}
则下面对函数指针的定义和赋值均正确的是
A)void (*pf)( );pf=fun;
B)void *pf();pf=fun;
C)void *pf();*pf=fun;
D)void (*pf)(int,char);pf=&fun;
以上是2009年9月二级c真题,答案是A
B、C错了自不用说;困扰我的是A/D项,先说D项,语句void (*pf)(int,char);是不是应改为void (*pf)(int,char*);二个pf=&fun;应为pf=fun;很明显!
这样一来单选应选A,但是定义指向函数的指针,括号里不用带参数表列吗???
本人现用谭浩强先生的著作都没有 A)void (*pf)( );pf=fun;这样的定义。
望各位高人大虾指点迷津!!!!!!!! 展开
5个回答
展开全部
一种一种情况跟你解释吧:
第一种:
D)void (*pf)(int,char);pf=&fun;
在C语言中,其实对函数指针的参数并不进行检查,所以
void (*pf)(int,char);pf=&fun;
这种写法在VC6中的C编译器中是可以通过的,但是在第二个char参数中会给出一个警告,当然你把char改成char*,就会连警告都没有了
第二种:
在C语言中pf=&fun这种写法,编译器会自动翻译成pf=fun,因为函数名本身就是指向一段代码的头部指针,加不加&都无所谓。
第三种:
请仔细看,上面两种假设都是“C语言”,如果在C++中,编译是无法通过的,C++对类型的检查更加严格。
其实对每一本书,大家都有各自的见解,没必要全盘否认,也不要全信书,前者你学不到知识,后者你会成书呆子。而最重要的是,你要把这些代码打入编译器中去实践,否则你就算理论能过关,上机考试那3道题目也够呛。
我学C语言入门的时候看了三本书,相比其它两本,老谭这本还是挺详细的,在连贯性上还有点像打游戏升级的味道,只要细细品读每一节,并注重实践,不会让你有看不下去的感觉。
个人意见,仅供参考,呵呵
第一种:
D)void (*pf)(int,char);pf=&fun;
在C语言中,其实对函数指针的参数并不进行检查,所以
void (*pf)(int,char);pf=&fun;
这种写法在VC6中的C编译器中是可以通过的,但是在第二个char参数中会给出一个警告,当然你把char改成char*,就会连警告都没有了
第二种:
在C语言中pf=&fun这种写法,编译器会自动翻译成pf=fun,因为函数名本身就是指向一段代码的头部指针,加不加&都无所谓。
第三种:
请仔细看,上面两种假设都是“C语言”,如果在C++中,编译是无法通过的,C++对类型的检查更加严格。
其实对每一本书,大家都有各自的见解,没必要全盘否认,也不要全信书,前者你学不到知识,后者你会成书呆子。而最重要的是,你要把这些代码打入编译器中去实践,否则你就算理论能过关,上机考试那3道题目也够呛。
我学C语言入门的时候看了三本书,相比其它两本,老谭这本还是挺详细的,在连贯性上还有点像打游戏升级的味道,只要细细品读每一节,并注重实践,不会让你有看不下去的感觉。
个人意见,仅供参考,呵呵
展开全部
谭浩强老汉的书,很恶劣,推荐少看。
另外,个人认为答案应该是A没错。
pf的定义只需要说明他是函数,pf=fun才真正给pf了函数的本身(地址、形参)等
另外,个人认为答案应该是A没错。
pf的定义只需要说明他是函数,pf=fun才真正给pf了函数的本身(地址、形参)等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
D是错的,因为函数名本来就是一种地址,是函数的入口地址。类似指针。还对它去地址,是错的,d赋给pf的是fun这个引用的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
tc2.0 A是正确的
bc++3.1 A是错误的
D么也是错误
pf变成函数指针的地址
bc++3.1 A是错误的
D么也是错误
pf变成函数指针的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选项A书上没有,不代表不可以这么写哈。。。
这个格式在C语言中是合法的哈;只是在C++是通不过编译的,也就是不合法的,由此可以看出C++比C在编译时更加严格了哈。
你放心好了,我已经上机证明了以上这个结论。。
这个格式在C语言中是合法的哈;只是在C++是通不过编译的,也就是不合法的,由此可以看出C++比C在编译时更加严格了哈。
你放心好了,我已经上机证明了以上这个结论。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询