指向运行函数的指针,其中变量是结构的变量

时间:2013-12-29 16:01:58

标签: c function pointers struct

在下面的代码中,我使用一个指针来运行一个函数,其中变量是结构的变量。当我运行函数(*foo)(numbers)时,我收到消息" 24:1: warning: parameter names (without types) in function declaration [enabled by default]",如果我将结构的名称与变量(*foo)(sum_elements numbers)放在一起,我会遇到很多错误它缺少什么不能得到警告信息?

#include<stdio.h>

struct sum_elements{                //structure declaration
int number1,number2,sum_result,*foo;
}numbers; 

void Sum_operator(struct sum_elements numbers){     //structure's function declaration

numbers.sum_result = numbers.number2 + numbers.number1;
printf("The sum is %d",numbers.sum_result); 

}

int main(){

printf("Enter first number: "); 
scanf("%d",&numbers.number1); 

printf("Enter second number:"); 
scanf("%d",&numbers.number2); 

void (*foo)(numbers);               //pointer to function declaration
foo = &Sum_operator;
    (*foo)(numbers);
} 

3 个答案:

答案 0 :(得分:2)

使用参数type:

声明这样的函数指针
void (*foo)(struct sum_elements); 

答案 1 :(得分:1)

为了方便起见,您可以为函数指针的类型添加typedef。 e.g。

typedef void (*MYFUNC)(struct sum_elements) ;

MYFUNC foo = &Sum_operator ;
foo( numbers ) ;

答案 2 :(得分:0)

声明pointer to a function时,必须提供重新设定的类型和参数类型。该指针不能指向具有不同返回类型或参数类型的函数。

在您的情况下,声明必须如下:

void (*functionPointer)(struct sum_elements);