[英]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*
返回類型的函數聲明! 現在,任務將很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.