【编程初入门】 看C Primer Plus 看到刚开头函数定义的时候有个小问题,感觉函数有重复定义

本人自学编程还没多久,遇到问题比较初级,希望各位路过的大神多多指点,不喜勿喷哈。
代码如下:

/*在一个文件中使用两个函数*/#include <stdio.h>void butler (void);  /* ISO/ANSI C函数原型*/int main (void){    printf("I will summon the butler function.\n");
    butler();    printf("Yes. Bring me some tea and writeable CD-ROMS.\n");    return 0;
}void butler (void) /*   函数定义的开始   */{    printf("You rang, sir?\n")
}

我的问题是:

https://img4.mukewang.com/5c62d5380001242a08000427.jpg

void butler (void); /* ISO/ANSI C函数原型*/

究竟这一行代码起到什么作用? 以前学过一点JAVA和python 印象中里面没有类似这样的东西


慕盖茨4494581
浏览 585回答 1
1回答

桃花长相依

C 语言对函数要求&nbsp;先声明后定义再调用void butler (void); /* ISO/ANSI C函数原型*/&nbsp;这个是声明,告知编译器我需要使用该函数void&nbsp;butler&nbsp;(void)&nbsp;/*&nbsp;&nbsp;&nbsp;函数定义的开始&nbsp;&nbsp;&nbsp;*/{&nbsp;&nbsp;&nbsp;&nbsp;printf("You&nbsp;rang,&nbsp;sir?\n"); }这个是定义但是如果调用发生在定义之后,那么可以省略声明这一步。/*在一个文件中使用两个函数*/#include&nbsp;<stdio.h>void&nbsp;butler&nbsp;(void)&nbsp;/*&nbsp;&nbsp;&nbsp;函数定义的开始&nbsp;&nbsp;&nbsp;*/{&nbsp;&nbsp;&nbsp;&nbsp;printf("You&nbsp;rang,&nbsp;sir?\n"); }int&nbsp;main&nbsp;(void){&nbsp;&nbsp;&nbsp;&nbsp;printf("I&nbsp;will&nbsp;summon&nbsp;the&nbsp;butler&nbsp;function.\n"); &nbsp;&nbsp;&nbsp;&nbsp;butler();&nbsp;&nbsp;&nbsp;&nbsp;printf("Yes.&nbsp;Bring&nbsp;me&nbsp;some&nbsp;tea&nbsp;and&nbsp;writeable&nbsp;CD-ROMS.\n");&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }但是在多文件中函数互相调用、库函数之类的情况下,函数如果没有声明,编译器会报错。
打开App,查看更多内容
随时随地看视频慕课网APP