错误:Void值不被忽略,因为它应该在C编程中

我正在写一个有两个function的C程序。 一个函数是通常的main函数,另一个函数是指针void函数。 当我尝试在基于Linux的系统中编译我的程序时,我收到以下错误:

host1@matrix:~/cprog/practice> gcc -o function1 function1.c prog1.c: In function 'main': prog1.c:16:14: error: void value not ignored as it ought to be 

这是我的代码:

 #include  void function_1(int *num1, int *num2); int main(void) { int numerator; int denominator; int finalAnswer; printf("Numerator: "); scanf("%d", &numerator); printf("Denominator: "); scanf("%d", &denominator); finalAnswer = function_1(&numerator, &denominator); printf("%d / %d = %d \n", numerator,denominator,&finalAnswer); return 0; } void function_1(int *num1, int *num2) { int total; total = *num1 / *num2; return; } 

正如您在上一个问题中所提到的, void函数不返回任何内容,因此您无法将其返回值分配给任何内容。 这就是你收到错误的原因。

如果希望函数发回一个值但具有void返回类型,请按以下方式定义:

 void function_1(int num1, int num2, int *total) { *total = num1 / num2; } 

并称之为:

 function_1(numerator, denominator, &finalAnswer); 

另外,你的最终printf应该是这样的:

 printf("%d / %d = %d \n", numerator,denominator,finalAnswer); 

这个:

 void function_1(int *num1, int *num2) 

没有回报。 void是一种“无”类型,在表达式中,它意味着忽略结果,作为返回类型,它意味着什么都不返回。 分配void函数的(不存在的)返回值没有意义。