C 为什么这些类型定义会得到相同的结果
我编写了三个不同的类型定义,但它们执行相同的结果。那么为什么会发生这种情况呢。我认为结果可能不同,因为我使用了相同的方法来执行函数C 为什么这些类型定义会得到相同的结果,c,pointers,function-pointers,C,Pointers,Function Pointers,我编写了三个不同的类型定义,但它们执行相同的结果。那么为什么会发生这种情况呢。我认为结果可能不同,因为我使用了相同的方法来执行函数 #include <stdio.h> int* digit(int* number){ return number; } typedef int*function0(int*); typedef int*(function1(int*)); typedef int*(*function_pointer)(int*); void print
#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;
}
#包括
整数*数字(整数*数字){
返回号码;
}
typedef int*函数0(int*);
typedef int*(函数1(int*));
typedef int*(*函数_指针)(int*);
无效打印数字0(函数0 p,整数*数字){
printf(“%d”,*p(数字));
}
无效打印数字1(函数1 p,整数*数字){
printf(“%d”,*p(数字));
}
void printDigit2(函数指针p,int*位){
printf(“%d”,*p(数字));
}
int main(){
INTA=10;
printDigit0(数字和a);
打印数字1(数字和a);
打印数字2(数字和a);
返回0;
}
它们都打印了10
function0
和function1
是相同的,只是有多余的括号<代码>函数\指针是指向函数0
的指针
在函数参数中,如果指定函数类型,则会将其调整为函数指针类型(即,函数的行为与指定函数指针类型的行为相同)。因此
printDigit0
和printDigit1
的行为就好像它们与printDigit2
具有相同的声明一样function0
和function1
是相同的,只是有多余的括号<代码>函数\指针是指向函数0
的指针
在函数参数中,如果指定函数类型,则会将其调整为函数指针类型(即,函数的行为与指定函数指针类型的行为相同)。因此
printDigit0
和printDigit1
的行为就像它们与printDigit2
具有相同的声明一样,所有函数指针原型都是相同的,即它们的输入参数类型和返回类型完全相同。请参阅所有函数指针原型都是相同的,即它们的输入参数类型和返回类型完全相同