Week 6 c语言入门——函数

一.例子

#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(30, 45);
}

void sum就是我们自己定义的一个加法函数;

二.什么是函数?

  • 函数是一块代码,接受零个或多个参数,做一件事,并返回零个或一个值;
  • 可以先想象成数学中的函数;
    • y=f(x);
    • 在这里插入图片描述

tips:void的返回类型是不返回任何值;

1.调用函数

  • 函数名(参数值);
  • ()括号起到了表示函数的重要作用
    -即使没有参数也需要()
  • 如果没有参数,则需要给出正确数量和顺序
  • 这些值会被按照顺序依次用来初始化函数中的参数
    在这里插入图片描述
  • 函数知道每一次是哪里调用它,会返回到正确的地方

2.从函数中返回

素数求和
在这里插入图片描述

  • int isPrime说明要返回一个int类型的结果,安排return语句返回这个结果

——————
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210417171039580.png

  • 返回的变量ret可以作为结果赋给下个变量
  • 可以再传递给函数
  • 甚至可以丢弃

3.没有返回值的函数

在这里插入图片描述

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

三.函数的参数

1.函数声明

实例

#include<stdio.h>
void sum(int begin, int end); //函数声明
int main()
{
	sum(1, 10);
	sum(20, 30);
	sum(30, 45);
}
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);
}

-函数头,以分号“;”结尾,就构成了函数的原型
-函数原型的目的是告诉编译器这个函数张什么样
-名称
-参数(数量及类型)
-返回类型

2.类型不匹配

#include<stdio.h>
void cheer(int i)
{
	printf("cheer %d\n", i);
}
int main()
{
	cheer(2.4);
	return 0;
}

什么int 整数型和2.4冲突 但c编译器并没有报错 但在后面的语言 如java c++比c严格,会无法通过

3.传值

在这里插入图片描述

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

四.函数的变量

1.本地变量(局部变量、生存变量)

  • 函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量
  • 定义在函数内部的变量就是本地变量
  • 参数也是本地变量

2.变量的生存期和作用域

  • 生存期:什么时候这个变量开始出现了,到什么时候它消亡了
  • 作用域:在(代码的)什么范围内可以访问这个变量(这个变量可以起作用)
  • 对于本地变量,这两个问题的答案是统一的:大括号内——块
#include<stdio.h>
void swap(int x,int y);
int main()
{
	int a=5;
	int b=6;
	swap(a,b); 
	printf("a=%d,b=%d\n",a,b);
	return 0;
 } 
void swap(int x,int y)
{
	int swap;
	int t=x;
	x=y;
	y=t; 
}

main里头的a b与swap里头的a b无关,swap里的量是属于他自己的ab 当swap运行结束,他的函数空间的消亡了

3.本地变量的规则

  • 本地变量是定义在块内的
    -它可以是定义在函数的块内
    -也可以定义在语句的块内
    -甚至可以随便拉一对大括号来定义变量
    -程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
    -块外面定义的变量在里面仍然有效
    -块里面定义了和外面同名的变量则掩盖了外面的
    -不能在一个块内定义同名的变量
    -本地变量不会被默认初始化
    -参数在进入函数的时候被初始化了

4.没有参数时

  • void f(void) or void f( );
    -在传统c中,void f( );它表示f函数的参数表未知,并不表示没有参数

5.逗号运算符?

  • 调用函数时的逗号和逗号运算符怎么区分》
  • 调用函数时的圆括号里的逗号是标点符号,不是运算符
  • f(a,b) //传了一个参数
  • f((a,b)) //传了2个参数

6.关于main

  • int main()也是个函数
  • 要不要写成 int main(void)?
  • return的0有人看吗?
    -Windows:if error level 1…

五.小测验

在这里插入图片描述函数原型必须要有分号
函数头,以分号“;”结尾,就构成了函数的原型

在这里插入图片描述
调用的时候不能做返回值的赋值

在这里插入图片描述
B.不写的话计算机会猜测里面有一个int型参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值