- 任何一个c语言程序都是有一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说c语言是由函数构成的。
- 将一个常用的功能封装起来,方便以后调用
- 函数名:函数叫什么名字
- 函数题:函数是干啥的,里面包含了什么代码
- 固定格式(很多语言的函数都是这么写的)
四.函数的参数 1.形参和实参的基本概念 2.形参个书和实参一致 3.参数的传递是值传递 4.参数名不能跟函数哪的局部变量同名
#include <stdio.h>
int printLine()
{
printf("-------------\n");
return 0;
}
int average(int num1, int num2)
{
return (num1 + num2)/2;
}
int main()
{
/*
printLine();
printLine();
printLine();
*/
int a = 10;
int b = 9;
int c = average(a, b);
printf("c is %d\n", c);
int a1 = 11;
int b1 = 20;
int d = average(a1, b1);
printf("d is %d\n", d);
return 0;
}
五.函数的返回值 1.返回值的基本概念,return的作用 2.void 3.return void可以省略return 可以多次使用return return后面不能有其它语句 4.函数的弱语法 如果没有写返回值类型,默认是int 如果写了返回值,可以不返回 调用一个没有定义过的函数 六.定义函数的步骤 1.明确函数作用,起一个有意义的函数名称 2.明确函数的参数和返回值 七.函数注意 不能嵌套定义函数 死循环调用,自己调用自己 不能重复定义,可以重复声明
#include <stdio.h>
// 形式参数,简称形参
int sum(int num1, int num2)
{
// 函数体内部不能定义和形参一样的变量
// int num1;
num1 = 50;
return num1 + num2;
}
/*
return的作用:
1> 退出函数
2> 返回一个具体值给函数调用者
返回值注意点
1> void代表没有返回值
2> 如果没有明确说明返回值类型,默认是返回int类型
3> 就算明确声明了返回值类型,也可以不返回任何值
默认情况下,C语言不允许两个函数的名称一样
*/
char test()
{
return 'A';
}
/*
void test(int a, int b)
{
}*/
void test5()
{
}
int test3()
{
printf("999999999\n");
}
// 如果不明确声明返回值类型,默认就是int类型
test2()
{
printf("888888888\n");
return 10;
}
int main()
{
int c = test2();
printf("c=%d\n", c);
test3();
//test();
/*
int a = 100;
int b = 27;
// a、b称为函数的实际参数,简称实参
int c = sum(a, b);
printf("a=%d, b=%d, c=%d\n", a, b, c);*/
return 0;
}
八.函数的补充 1.main函数 返回值:0,正常退出;1,异常退出 2.printf函数 #include 返回值:字符串的长i度 十.函数的声明 1.函数的定义顺序 2.函数的声明作用:声明和定义类似于身份证和人的关系 3.只有函数声明、没有定义,编译警告、链接报错 十一. .h和.c文件的分工 1.单文件的坏处 一个文件的内容太多,不利于阅读、调试 多人修改同一个文件出问题 公司里面是团队合作 2.将函数抽取到另一个.c文件中 3.在其他文件中声明函数 4.将抽取到另外一个文件中 5.抽取步骤总结 .c文件写函数的定义 .h文件写函数的声明 十二.#include 1.预处理指令简介 2.#include的作用 纯粹是文件拷贝 3.#include<stdio.h> stdio.h中有什么?链接的时候做了什么事情:把项目中所有相关联的.o目标文件、c语言函数库合并在一起,生成可执行文件。 <>和""的区别 4.#include的路径问题 代码笔记如下: ptt.c
#include <stdio.h>
#include "pdd.h"
int main()
{
int score1 = 100;
int score2 = 70;
int c = average(score1, score2);
int d = sum(score1, score2);
printf("平均分是%d\n", c);
printf("总分是%d\n", d);
// \n是一个转义字符
// \t tab键
// \" 一个双引号
// printf函数返回的字符串常量的字符数,并不是字数
// 1个汉字占据3个字符
int e = printf("哈h\"\ta\n");
printf("e=%d\n", e);
return 0;
}
函数的定义.c文件 pdd.c
int average(int a, int b)
{
return (a + b)/2;
}
int sum(int a, int b)
{
return a + b;
}
int minus(int a, int b)
{
return a - b;
}
int multiply(int a, int b)
{
return a * b;
}
函数的声明.h文件 pdd.h
/*
pdd
编写函数的声明
*/
int average(int a, int b);
int sum(int a, int b);
int minus(int a, int b);
int multiply(int a, int b);
编译链接:cc ptt.c pdd.c 生成可执行文件 ./a.out 输出结果