C语言 第三章 函数(2)
目录
函数声明
函数声明注意事项
函数的调用
函数的成分
关于main()
main()的作用
main() 的一般格式
main()函数的其它写法
关于exit()
这两个常量也是定义在stdlib.h 里面:
注:
函数声明
函数声明注意事项
1.C程序中的所有函数都是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。
//错误演示
int funcl(int a,int b){ //第1个函数的定义
...
int func2(int c,int d){ //第2个函数的定义
...
}
...
}
2. 同一个程序中函数不能重名,函数名用来唯一标识一个函数。即在标准的C语言中,,并不支持函数的重载。
函数的调用
调用函数时, 需要传入实际的参数值。如果没有参数,只要在函数名后面加上圆括号就可以了。
举例
函数的声明
void func(){
printf("这是我的第一个函数!\n");
}
函数的调用
int main() {
func();
//func(10); // 报错
//func(10,20); // 报错
return 0;//程序正常结束,默认返回0
}
执行顺序
举例2
void func(int x,int y){
int sum=x+ y;
printf("x+y=%d\n", sum
int main() {
func(3,5);
return 0;
}
说明:
1、调用时,参数个数必须与函数声明里的参数个数一致,参数过多或过少都会报错。
2、函数间可以相互调用,但不能调用main函数,因为main函数是被操作系统调用的,作为程序的启动入口。反之,main() 函数可以调用其它函数。
3、函数的参数和返回值类型,会根据需要进行自动类型转换。
函数的成分
关于main()
main()的作用
- C 语言规定,main() 是程序的入口函数,即所有的程序一定要包含一个 main() 函数。程序总是从这个函数开始执行,如果没有该函数,程序就无法启动。
- main()函数可以调用其它函数,但其它函数不能反过来调用main()函数。main()函数也不能调用自己。
main() 的一般格式
int main() {
//函数体(略)
return 0;
}
C 语言约定:
- 返回值 0 表示函数运行成功;返回其它非整数值,表示运行失败,代码出了问题。系统根据 main()的返回值,作为整个程序的返回值,确定程序是否运行成功。
- 正常情况下,如果 main() 里面省略 return 0 这一行,编译器会自动加上,即 main()的默认返回值为0。所以,也可以声明如下:
int main() {
//函数体(略)
}
注意:
- C 语言只会对 main() 函数默认添加返回值,对其它函数不会这样做,所以建议书写时保留 return 语句,以便形成统一的代码风格。
main()函数的其它写法
main()的声明中可以带有两个参数,格式如下:
int main(int argc, char *argv[]) {
//函数体
}
其中,形参argc,全称是argument count,表示传给程序的参数个数,其值至少是1;而argv,全称是argument value,argv[]则是指向字符串的指针数组。
这种方式可以通过命令行的方式,接收指定的字符串传给参数argv。举例:
#include "stdio.h"
int main(int argc, char *argv[]) {
printf("argc = %d\n",argc);//函数体
for(int i = 0;i < argc;i++){
printf("%s\n",argv[i]);
}
return 0;
}
关于exit()
- exit()函数用来终止整个程序的运行。一旦执行到该函数,程序就会立即结束。该函数的原型定义在头文件stdlib.h 里面。
- exit()可向程序外部返回一个值,它的参数就是程序的返回值。一般来说,使用两个常量作为它的参数.
这两个常量也是定义在stdlib.h 里面:
- EXIT_SUCCESS(相当于 0)表示程序运行成功,正常结束;
- EXIT_FAILURE(相当于 1)表示程序异常中止。
// 程序运行成功
// 等同于 exit(0);
exit(EXIT_SUCCESS);
// 程序异常中止
// 等同于 exit(1)
exit(EXIT_FAILURE);
注:
在main()函数结束时也会隐式地调用exit()函数,exit() 等价于使用 return 语句。其它函数使用 exit(),就是终止整个程序的运行,没有其它作用。
#include <stdio.h>
#include <stdlib.h>
int main(){
printf("aaaaaaaaaaaaaaaa");
exit(0);
// 以下代码不会被执行
//printf("bbbbbbbbbbbbbbbb");
return 0;
}