(5)函数-5.1

1、从函数中返回值:
return 停止函数的运行,送回一个值。
形式:
a、return;
b、return 表达式;
2、函数声名时可不写变量名,只需说明函数的类型即可,因为编译器不会检查参数得名称,只检查参数类型。
3、C语言在传统上最大的漏洞:
a、调用函数时给定的值与参数的类型不匹配时。C语言不会报错。[ 1-1.cpp ]

#include <stdio.h>

void print(int i) //输入类型为 int
{
	printf("i=%d\n", i);
}

int main()
{
	double f = 3.9;
	print(f);   //不报错!
	
	print(2.4);  //不报错!

	return 0;
}

b、编译器总是悄悄替你把类型转换好,但这很可能不是你想要的。
c、但在后续的语言这方面很严格,如:C++、JAVA
4、C语言在调用函数时,永远只能传值给函数,包括参数为指针时,也是传的地址(16进制的数)。[ 1-2.cpp ]
所以:
a、每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。
b、过去,对于函数参数表中的参数,叫作“形式参数”,调用函数时给的值,叫作”实际参数“。

#include <stdio.h>

void swap(int a, int b)
{
	int i;

	i = a;
	a = b;
	b = i;
}

int main()
{
	int a = 3, b = 6;
	swap(a, b); //这里只是将数值3 6传递给swap函数。这里子函数与主函数的变量空间并没有包含关系,两个变量空间是相互独立的。当main()函数调用swap()函数时,就会离开主函数的变量空间转向swap()函数的变量空间。
	
	printf("a=%d\nb=%d\n", a, b);	
	
	return 0;
}

5、本地变量[ 局部变量、自动变量]-[ 1-3.cpp ]
a、函数的每次运行,就产生一个独立的变量空间,在这个变量空间中的变量是函数这次运行所独有的,称为本地变量。
b、定义在函数内部的变量就是本地变量
      本地变量的规则:
      (1)本地变量是定义在块内的:
                 》它可以是定义在函数的块内
                 》也可以定义在语句体内的块内
                 》甚至可以随便拉一对大括号来定义变量
      (2)程序进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失
      (3)块外面定义的变量在块里面仍然有效
      (4)块里面定义了和外面同名的变量则掩盖外面的
      (5)不能在一个块内定义同名变量
      (6)本地变量不会被默认初始化(视编译器决定)
      (7)但是函数的参数在调用函数时必须给定

#include <stdio.h>

void swap(int a, int b)
{
        int i;  //本地变量定义在函数体内

        i = a;
        a = b;
        b = i;
}

int main()
{
        int a = 3, b = 6;
        swap(a, b); 
	
	if(a < b)
	{
		int aa = 1;  //本地变量定义在语句块内。
		printf("a = %d\n", a); //块外面定义的本地变量在里面仍然有效
	}
	
	//可以随便拉一个大括号来定义本地变量。
	{
		int bb = 2;
		printf("%d\n", bb);

		int a = 34;  //会覆盖外面同名的本地变量
		printf("a=%d\n", a);	
	}

        printf("a=%d\nb=%d\n", a, b);
        
        return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值