Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这些类型定义会得到相同的结果_C_Pointers_Function Pointers - Fatal编程技术网

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
具有相同的声明一样,所有函数指针原型都是相同的,即它们的输入参数类型和返回类型完全相同。请参阅所有函数指针原型都是相同的,即它们的输入参数类型和返回类型完全相同