C语言基础入门——函数

本文介绍了C语言中函数的分类,包括标准函数和用户自定义函数,以及无参函数和有参函数的概念。在函数调用过程中,通过参数和返回值进行数据传递,并强调了形参和实参的匹配规则及作用域。同时,讨论了局部变量(内部变量)和全局变量(外部变量)的差异,局部变量仅在函数内部有效,而全局变量在整个源文件范围内有效,但也带来了可能的程序复杂性和错误风险。
摘要由CSDN通过智能技术生成


函数的分类与调用

从用户角度来看,函数分布为如下两种:
(1)标准函数:即库函数,这是由系统提供的,用户不必自己定义的函数,可以直接使用它们,如 printf 函数、scanf函数.不同的C系统提供的库函数的数量和功能会有一些不同,但许多基本的函数是相同的。
(2)用户自己定义的函数:用以解决用户的专门需要。

从函数的形式看,函数分为如下两类。
(1)无参函数:一般用来执行指定的一组操作.在调用无参函数时,主调函数不向被调用函数传递数据.
 无参函数定义形式如下:

类型标识符 函数名()
{
	声明部分;
	语句部分;	
}

(2)有参函数:主调函数在调用被调用函数时,通过参数向被调用函数传递数据。
有参函数的定义形式如下:

类型标识符 函数名(形式参数表列)
{
	声明部分;
	语句部分;
}

在不同的函数之间传递数据时,可以使用的方法如下:
(1)参数:通过形式参数和实际参数
(2)返回值:用return语句返回计算结果
(3)全局变量:外部变量
全局变量的使用

#include <stdio.h>
#include <stdlib.h>
int i=10;//全局变量
void print(int a)
{
	printf("print i=%d\n",i);
}
int main()
{
	printf("main i=%d\n",i);i=5;
	print(i);
	system("pause");
	return O;
}

关于形参与实参的一些说明如下。
(1)定义函数中指定的形参,如果没有函数调用,那么它们并不占用内存中的存储单元.只有在发生函数调用时,函数print中的形参才被分配内存单元.在调用结束后,形参所占的内存单元也会被释放。
(2)实参可以是常量、变量或表达式,但要求它们有确定的值,例如, print(i+3)在调用时将实参的值赋给形参。假如 print函数有两个形参,如 print(int a,int b),那么实际调用print函数时,使用print(i,i++)是不合适的,因为C标准未规定函数调用是从左到右计算还是从右到左计算,因此不同的编译会有不同的标准,造成代码在移植过程中发生非预期错误.
(3)在被定义的函数中,必须指定形参的类型。如果实参列表中包含多个实参,那么各参数间用逗号隔开.实参与形参的个数应相等,类型应匹配,且实参与形参应按顺序对应,一一传递数据。
(4)实参与形参的类型应相同或赋值应兼容。
(5)实参向形参的数据传递是单向“值传递”,只能由实参传给形参,而不能由形参传回给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。
(6)形参相当于局部变量,因此不能再定义局部变量与形参同名,否则会造成编译不通.

局部变量与全局变量

内部变量

在一个函数内部定义的变量称为内部变量.它只在本函数范围内有效,即只有在本函数内才能使用这些变量,故也称局部变量.
关于局部变量需要注意如下几点:
(1)主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效.主函数也不能使用其他函数中定义的变量。
(2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰.(3)形式参数也是局部变量.
(4)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称“分程序”或“程序块”.例6.3.1中的 int j=5就是如此,只在离自己最近的花括号内有效,若离开花括号,则在其下面使用该变量会造成编译不通.

外部变量

函数之外定义的变量称为外部变量.外部变量可以为本文件中的其他函数共用,它的有效范围是从定义变量的位置开始到本源文件结束,所以也称全程变量.
关于全局变量需要注意如下几点:
(1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元(2)使用全局变量过多会降低程序的清晰性。在各个函数执行时都可能改变外部变量的值,程序容易出错,因此要有限制地使用全局变量.
。(3)因为函数在执行时依赖于其所在的外部变量,如果将一个函数移到另一个文件中,那么还要将有关的外部变量及其值一起移过去。然而,如果该外部变量与其他文件的变量同名,那么就会出现问题,即会降低程序的可靠性和通用性.C语言一般要求把程序中的函数做成一个封闭体,除可以通过“实参→形参”的渠道与外界发生联系外,没有其他渠道.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值