在C中,从main调用一个函数

时间:2013-05-17 21:01:38

标签: c function

在C中,我试图从main调用函数printSum。但主要功能是不调用printSum,它只打印出“嗨!”这是来自main的打印声明。我不确定为什么没有调用printSum。感谢。

代码:

int main(void){

  void printSum(void);
  printf("Hi!\n");

  return 0;
}

void printSum (void){
  printf("Please give two integers\n");
    int x,y;
  scanf("%d %d", &x,&y);
  printf("%d + %d is %d\n",x,y,x+y);
}

萨姆

6 个答案:

答案 0 :(得分:7)

你再次定义了.. 只需从函数中删除void。 包括一个前置声明的标题,以便识别它..

void printSum (void); <-------------------

int main(void){

  printSum();         <-------------------------
  printf("Hi!\n");

  return 0;
}

void printSum (void)
{
  printf("Please give two integers\n");
  int x,y;
  scanf("%d %d", &x,&y);
  printf("%d + %d is %d\n",x,y,x+y);
}

答案 1 :(得分:3)

看起来你刚刚开始使用C.希望你有一些其他语言的经验,因为C有一个陡峭的学习曲线。无论如何,重要的是要注意关于C的一些事情。首先是void printSum(void);的真正含义。打破它:

void printSum(void);

这声明了一个返回签名。换句话说,该功能会给你什么。在C中,单词void基本上意味着“无变量”。请特别记住。为什么?因为C有另一个相似的词NULLNULL表示“没有价值”。这是另一种看待它的方式。

一些有效变量:intfloatboolvoid 一些有效值:1'c'2.0fNULL

实际上,NULL实际上只是数字0。从字面上看。 NULL == 0 将返回true。

继续......

void printSum (void);

这定义了项目的名称。

void printSum void ;

括号表示这是一个函数。

void printSum( void );

这表示传递给系统的变量。所以这个可以是int,float等。

void printSum(void);

分号代表声明的结尾。这个概念解释起来有点棘手,但只是把它想象成一个句子。

现在,重要的一点是第一个void。如果你告诉C函数返回什么样的东西,它假设你在谈论函数,而不是实际调用它。省略第一个void使C尝试运行函数而不是 define 声明它。

定义一个函数和声明它之间的区别很有意思,当你更习惯于C时,最好保存它。

答案 2 :(得分:2)

您的程序不会调用printSum,它只是声明它。改变这一行:

void printSum(void);

printSum();

如果您的源文件中的函数与放在此处的源文件的顺序相同,那么您还需要转发声明或移动printSummain的实现是正确的。< / p>

你应该考虑一本初学C书。

答案 3 :(得分:2)

void printSum(void);

实际上没有调用函数,它只是声明它存在。你需要这样做,所以编译器将知道如何调用它,即使它还没有被定义,所以留下那一行。但是要实际调用该函数,你需要:

printSum();

答案 4 :(得分:0)

因为不是实际调用函数,而是宣告它。要调用该函数,您只需要函数名称和参数列表,在本例中为空:

printSum();

答案 5 :(得分:0)

以下内容: -

void printSum(void);

不是函数调用。这是一个功能声明。

printSum();

是一个函数调用。您还应该在main之前声明该函数。