【问题标题】:Why can't I pass void and a parameter to the function in C?为什么我不能将 void 和参数传递给 C 中的函数?
【发布时间】:2020-08-28 00:59:58
【问题描述】:
#include <stdio.h>

void fun();

int main(void) {
  fun(fun());
  return 0;
}

void fun()
{
  printf("function is called");
}

函数 fun 的返回类型为 void。所以下面的说法应该是正确的吧!

fun(fun())

但编译器引发编译错误为错误:参数类型'void'不完整。无法理解错误的含义?

【问题讨论】:

  • 正如你所说的fun() 是一个void 函数,因此它的返回值不能传递给它自己(没有)。
  • 另外,fun 函数不带参数,因此不能带参数调用它。
  • @Jabberwocky 你确定吗?我认为这是过时函数定义 void fun() 的弱点。
  • 是的。问题没有多大意义。这段代码的目的是什么? XY 问题。
  • 当您尝试printf("%d", fun()); 时,故障可能更明显。当void fun() 没有返回值时,应该打印什么值?您不能将void 函数的返回值传递给另一个函数,因为没有一个

标签: c function void return-type


【解决方案1】:

我想你想要这样的东西:

#include <stdio.h>

int fun(int arg);   // function takes one argument

int main(void) {
  fun(fun(1));      // use one argument when calling fun
  return 0;
}

int fun(int arg)
{
  printf("function is called\n");
  return 0;
}

【讨论】:

  • 我明白你说的。但我的问题是为什么将函数返回类型声明为 void 会引发错误。
  • 如果你的 fun 函数“返回”void 你不能使用 is 作为函数参数,就像你不能写 int value = fun(2) 一样。
猜你喜欢
  • 1970-01-01
  • 2020-08-15
  • 2018-09-03
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多