我正在尝试数组指针和函数指针的一些随机声明。我被打中了。
#include<bits/stdc++.h>
int add(int a,int b){
return 1729; }
int main(){
int (abc)(int,int);
abc = add;
return 0;
}
发出的错误是:
cannot convert 'int(int, int)' to 'int(int, int)' in assignment
但随着这两个abc
和add
是同一类型的,它为什么要转变?还是可以将函数分配给新变量?如果是这样,该怎么做?
int (abc)(int,int);
它不是函数指针。在这种情况下,多余的括号无关紧要,它等效于
int abc(int,int);
这是一个函数声明,C ++允许您将其放置在几乎任何地方(例如另一个函数的主体)。您尝试将一个功能名称分配给另一个功能名称,因此代码无法编译。
要获取指针,您需要指针语法
int (*abc)(int,int);
其中,此时,括号是必需的,否则你就会得到一个函数声明与int*
返回类型!现在,任务将格式正确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句