【发布时间】:2019-08-14 03:20:44
【问题描述】:
我编写了三种不同的类型定义,但它们执行相同的结果。那么为什么会这样。我认为结果可能会有所不同,因为我使用了相同的方式来执行函数。
#include <stdio.h>
int* digit(int* number){
return number;
}
typedef int*function0(int*);
typedef int*(function1(int*));
typedef int*(*function_pointer)(int*);
void printDigit0(function0 p, int* digit){
printf("%d", *p(digit));
}
void printDigit1(function1 p, int* digit){
printf("%d", *p(digit));
}
void printDigit2(function_pointer p, int* digit){
printf("%d", *p(digit));
}
int main() {
int a = 10;
printDigit0(digit, &a);
printDigit1(digit, &a);
printDigit2(digit, &a);
return 0;
}
他们都打印了 10
【问题讨论】:
-
所有函数指针原型都是相同的,即它们的输入参数类型和返回类型完全相同。
标签: c pointers function-pointers