【问题标题】:Why these type define get same results为什么这些类型定义得到相同的结果
【发布时间】: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


【解决方案1】:

function0function1 相同,只是有多余的括号。 function_pointer 是指向 function0 的指针。

在函数参数中,如果您指定函数类型,则将其调整为函数指针类型(即,函数的行为就像您指定了函数指针类型一样)。所以printDigit0printDigit1 的行为就好像它们具有与printDigit2 相同的声明。

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多