int (abc)(int,int) 是什么意思?
What does int (abc)(int,int) mean?
我正在尝试一起随机声明数组指针和函数指针。我在这里被击中了。
#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*
return 类型的函数声明!现在分配将是 well-formed.
我正在尝试一起随机声明数组指针和函数指针。我在这里被击中了。
#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*
return 类型的函数声明!现在分配将是 well-formed.