0%

C语言学习笔记之函数篇

函数篇

本章是函数篇了哦

初见函数

例子

求出1-10、20-30、35-45的三个和

非函数代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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", 35, 45, sum);

return 0;
}

注:代码复制是程序质量不良的表现。

函数版代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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;
}

什么是函数

函数是一块代码,接受零个或多个参数。然后做一件事情,并返回零个或一个值。

函数定义

1
2
3
4
5
6
7
8
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);
}

void sum(int begin, int end)为函数头

第一个{}中的内容称为函数体

sum是函数名,int begin, int end为参数表

void是返回类型,在此例子中表明函数不返回函数值

调用函数

  • 调用语法:函数名(参数值);

  • ()起到了调用函数的功能

  • 如果有参数,则需要给出正确的数量和顺序
  • 这些值会被按照顺序依次用来初始化函数中的参数

函数返回

函数知道每一次是哪里调用它,会返回到正确的地方。

从函数中返回值

  • return 停止函数的执行,并送回一个值
  • return;
  • return 表达式;

没有返回值的函数

  • void 函数名(参数表)
  • 不能使用带值的return(可以没有return)
  • 调用的时候不能做返回值的赋值
  • 如果函数有返回值,则必须使用带值的return

原型声明

1
2
3
4
5
6
#include <stdio.h>

void sum(int begin, int end); //声明

int main()
//以下内容省略
  • 函数头,以“ ; ”结尾,就构成了函数的原型
  • 函数原型的目的是告诉编译器这个函数长什么样【名称,参数(数量及类型),返回类型】

类型不匹配

  • 调用函数时给的值与参数的类型不匹配是C语言传统上最大的漏洞
  • 编译器总是悄悄替你把类型转换好,但是这很可能不是你所期望的。
  • 后续C++、Java会更加严格

传值

每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。

-------------本文结束感谢您的阅读-------------