C语言函数
1.什么情况下定义函数:添加一个常用的新功能
2.函数的定义格式
返回值类型 函数名(形式参数列表){
函数体
}
int average(int num1, int num2) {
return (num1 + num2)/2;
}
3.定义函数需要明确的东西
1> 起一个有意义的函数名
2>
参数注意点
1.形式参数:定义函数时函数名后面中的参数,简称形参
2.实际参数:调用函数式传入的具体数据,简称实参
3.实参个数必须等于形参个数
4.函数体内部不能定义和形参一样的变量
5.如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值
6.一个函数可以没有形参,也可以有无限多个形参
// 形式参数,简称形参
int sum (int num1,int num2)
{
// 函数体内部不能定义和形参一样的变量
// int num1;
num1 =50;
return num1 + num2;
}
return的作用:
1> 退出函数
2> 返回一个具体值给函数调用者
void test(){
}
返回值注意点
1> void代表没有返回值
2> 如果没有明确说明返回值类型,默认是返回int类型
3> 就算明确声明了返回值类型,也可以不返回任何值
默认情况下,C语言不允许两个函数的名称一样
#include<stdio.h>
/*
1.默认情况下,不允许有函数的名称一样
2.函数不能嵌套定义
3.函数不能重复定义,但是可以重复声明
4.如果有函数的声明,没有函数的定义
1> 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义
2> 链接报错,因为链接的时候会检测函数是否定义
*/
// 函数可以重复声明,既可以写在main函数的外面,也可以写在main函数里面,就是为了告诉编译器我有这个函数,你不要给我报错
//void printLine();
//void printLine();
int main(){
void printLine(); //这个是函数的声明,如果函数的定义写在main函数的后面,如果想在main函数中调用后面的函数,必须在调用这个函数之前进行声明,函数的声明既可以写在main函数里面,也可以写在main函数外面
printLine(); //这个是函数的调用
return 0;
}
// 函数的定义
void printLine(){
printf("--------\n");
}
include
1> 作用:拷贝右边文件的所有内容到#include所在的位置
2> 自定义的文件用"",系统自带的文件用<>
3> #include 的目的:拷贝printf函数的声明
多文件开发
//李四的.h文件编写函数的声明
int average(int a,int b);
int sum(int a,int b);
int minus(int a,int b);
int multiply(int a,int b);
//李四的.c文件编写基本算数运算的函数
int average(int a,int b){
return(a + b)/2;
}
int sum(int a,int b){
returna + b;
}
int minus(int a,int b){
returna - b;
}
int multiply(int a,int b){
returna * b;
}
//张三的.c文件编写main函数
#include<stdio.h>
#include"lisi.h" //导入李四的函数声明.h文件
int main(){
intscore1 =100;
intscore2 =70;
int c = average(score1, score2);
int d = sum(score1, score2);
printf("平均分是%d\n", c);
printf("总分是%d\n", d);
return 0;
}
多文件开发总结
1.函数的定义放.c文件,函数的声明放.h文件
2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件
3..h文件的作用:被别人拷贝。编译链接的时候不需要管.h文件
4.cc xx.o xxx.o 将多个目标文件链接在一起
cc xx.c xxx.c 将多个源文件编译、链接
\n是一个转义字符
\t tab键
\" 一个双引号
printf函数返回的字符串常量的字符数,并不是字数
1个汉字占据3个字符
int e = printf("哈h\"\ta\n");
printf("e=%d\n", e);
结果是:
哈占3个字节
h占一个字节
\"占一个字节
\t占一个字节
a占一个字节
\n占一个字节
所以e= 8