C函数篇
函数定义
函数是一块代码,接收一个或多个参数,做一件事情,并返回零个或一个值
函数头
void sum(int begin, int end)
参数表
(int begin, int end)
返回类型 (void) 函数名(sum)
void sum()
函数体 (即{}内的代码)
int i;
int sum =0;
for ( i=begin; i<=end; i++) {
sum += i;
}
printf("%d到%d的和是%d\n", begin, end, sum);
void返回类型代表你可以return一个空值
没有返回类型代表这个函数不能return
调用函数
- 函数名(参数值)
- ()起到了表示函数调用的重要作用
- 即使没有参数也需要()
- 如果有参数,则需要给出正确的数量和顺序
- 这些值会被按照顺序依次用来初始化函数中的参数
C在调用函数的时候,永远只能传值给函数
#include <stdio.h>
void cheer()
{
printf("cheer\n");
}
int main()
{
cheer();
//cheer 错误无法调用
return 0;
}
初见函数
#include <stdio.h>
int main()
{
int i;
int sum;
for ( i=1, sum=0; i<=10; i++) {
sum += i;
}
printf("%d到%d的和是%d\n", 1, 10, sum);
for ( i=20, sum=0; i<=30; i++) {
sum += i;
}
printf("%d到%d的和是%d\n", 20, 30, sum);
for ( i=35, sum=0; i<=45; i++) {
sum += i;
}
printf("%d到%d的和是%d\n", 30, 45, sum);
return 0;
}
代码复制是程序不良的表现
#include <stdio.h>
void sum(int begin, int end)
{
int i;
int sum =0;
for ( i=begin; i<=end; i++) {
sum += i;
}
printf("%d到%d的和是%d\n", begin, end, sum);
}
int main()
{
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}
从函数中返回值
int max(int a , int b)
{
int ret;
if ( a >b) {
ret = a;
} else {
ret = b;
}
return ret;
}
ret表示return,为满足单一出口
- return停止函数的执行,并送回一个值
- return;(停止运行)
- return 表达式
- 一个函数可以出现多个return语句()
没有返回值的函数
- void函数名(参数表)
- 不能使用带值的return
- 可以没有return
- 调用的时候不能做返回值的赋值
如果函数有返回值,则必须使用带值的return
函数先后关系
函数原型
- 函数头,以分号“;”结尾,就构成了函数的原型
- 其目的就是告诉编译器函数的样子
- 名称
- 参数(数量及类型)
- 返回类型
#include <stdio.h>
void sum(int begin,int end); //声明 函数原型
/* void sum(int ,int ); */
int main()
{
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}
void sum(int begin, int end) //定义 实际的函数头
{
int i;
int sum = 0;
for ( i=begin; i<=end; i++) {
sum += i;
}
printf("%d到%d的和是%d\n", begin, end, sum);
}
本地变量
规则
本地变量是定义在块内的
- 函数块
- 语句块
- 甚至随便拉一堆大括号来定义变量
- 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
- 块外面定义的变量在里面仍然有效
- 块里面定义了和外面同名的变量则掩盖了外面的
- 本地变量不会被默认初始化
- 参数在进入函数会被初始化
逗号运算符
f(a,b)—— ","表示标点符号
f((a,b))——","表示运算符,一个参数
关于main
版权声明:本文为htf135688原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。