📜  int * p()和int(* p)()之间的区别?(1)

📅  最后修改于: 2023-12-03 15:01:25.047000             🧑  作者: Mango

int * p()和int(* p)()之间的区别

在C语言中,指针是非常重要的概念。指针函数(function pointer)则是在函数中返回指针的函数。但是指针函数的写法比较复杂,常常会混淆类型和语法。在本文中,我们将讨论int * p()和int(* p)()之间的区别。

int * p()

int * p()是一个返回指向int类型变量地址的指针的函数。

int * p() {
    int a = 10;
    return &a;
}

在上面的代码中,p函数返回一个指向a变量的指针。但是需要注意的是,由于a变量是局部变量,一旦p函数返回,变量a就被销毁了。因此,返回这样一个指针是没有意义的。

int(* p)()

int(* p)()是一个指向返回类型为int的函数的指针。

int max(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

int(* p)(int, int) = &max;

在上面的代码中,我们声明了一个max函数,该函数比较两个整数并返回较大的那个数。然后我们声明了一个函数指针p,该指针指向max函数。通过使用指针函数,我们可以将指向该函数的指针传递到其他函数中,并在需要时调用该函数。

区别

int * p()返回一个指向局部变量的指针,当函数返回时,该变量被销毁,因此该指针是无效的。而int(* p)()返回一个指向函数(max函数)的指针,该指针可以在需要时调用该函数。

总之,指针函数是通过在函数中返回指针而产生的,可以将指针传递到其他函数中,并在需要时调用该函数。int * p()是返回指向局部变量的指针,而int(* p)()返回指向函数的指针。