gpt4 book ai didi

c - 将函数指针指向函数的位置

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:24 25 4
gpt4 key购买 nike

我有一个指向 add_int 函数的 funtion_ptr 函数指针。

情况 1:当在 main 函数之外放置一个语句 function_ptr = &add_int--> 编译器错误:error C2373: 'function_ptr' : redefinition;不同的类型修饰符(这是在)

#include <stdio.h>

int add_int(int n, int m){
return n + m;
}
int(*function_ptr)(int, int);
function_ptr = &add_int; // it's here

void main(){
int sum = (* function_ptr)(2, 3);
printf("sum = %d", sum);
_getch();
}

情况 2:main 函数中的 function_ptr = &add_int; --> 为真

#include <stdio.h>

int add_int(int n, int m){
return n + m;
}
int(*function_ptr)(int, int);


void main(){
function_ptr = &add_int; // it's now here
int sum = (* function_ptr)(2, 3);
printf("sum = %d", sum);
_getch();
}

任何人都可以为我解释这两种情况之间的区别。谢谢!

最佳答案

function_ptr = &add_int; 是一个赋值语句。函数内部允许语句,但函数外部只允许声明。由于赋值不是声明,因此编译器会发出错误。

如果您想将指针赋值作为其声明/定义的一部分,您可以将声明和赋值结合起来,如下所示:

#include <stdio.h>

int add_int(int n, int m){
return n + m;
}
int(*function_ptr)(int, int) = &add_int;

int main(){
int sum = (* function_ptr)(2, 3);
printf("sum = %d", sum);
return 0;
}

Demo.

关于c - 将函数指针指向函数的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com