c语言第六章函数与宏定义.ppt
二级必过法宝之chap6函数与宏定义
return result;
} 返回运算结果*/
第14页
表示不返回结果
2.不返回运算结 果的函数定义
void 函数名(参数表) /* 函数首部 */ { /* 函数体 */ 函数实现过程 return; /* 可以省略return */ }
这类函数通常用于屏幕输出等 不能省略 否则 函数类型被默认定义为int
20:18
第4页
程序结构
main( )
函数1
函数2
… …
函数m
函数 1_1
函数 1_2
函数 m_1
… …
函数 m_n
20:18
第5页
• main()也是一个函数,C程序由一个main() 或多个函数构成。 • 程序中一旦调用了某个函数,该函数就会 完成一些特定的工作,然后返回到调用它 的地方。
1、函数经过运算,得到一个明确的运算结果, 并需要回送该结果。例如,函数add()返回两个 数的和。 2、函数完成一系列操作步骤,不需要回送任何 运算结果。
20:18
第10页
函数定义1: int abs_sum(int m, int n) { if (m<0) m=-m; if(n<0) n=-n; return(m+n); }
20:18
函数定义2: int abs_sum(m, n) int m,n { if (m<0) m=-m; if(n<0) n=-n; return(m+n); }
20:18
第23页
4.函数原型声明
只写函数定义中的第1行(函数首部),并以分号结束。
函数类型 函数名(参数表);
double cylinder (double r, double h); void pyramid (int n);
计算机C语言教程第6章函数.ppt
说明: 1)以前的C版本函数声明方式不是采用函数原型,而只
声明函数名和函数类型。例如在例8.5中,也可写成: float add( );
第六章 函数
§6.1 概述
一个函数是根据进去的信息(输入)和产生的东西(输出结 果)所定义的一个黑盒。
在 C 语言函数中: 我们用参数把值传送进函数: 我们用 RETURN 把一个值返回调用函数。
C程序由一个main和任意个函数组成。
1) 除main外, 其它为系统函数、自编函数,系统函 数:由系统提供,用户可调用。自编函数:由用户 按语法规则编写。
例:c=2*max(a,b); 函数max是表达式的一部分,它的值乘以2再赋给c。
3、函数参数
函数调用作为一个函数的实参。 例:m=max(a,max(b,c));
其中max(b,c)是一次函数调用,它的值作为max另一次调用 的实参。
m的值是a、b、c三者最大的。
又如:
printf(“%d”,max(a,b));
类型标识符: 表示返回值类型。
例6.1 利用函数实现信息打印 #include<stdio.h> Void print_space() { printf(“\n”); } Void print_message() { printf(“\n Welcome you to use Clanguage !”);
(函数名相当于一变量,但应有所区别)
类型符 函数名( ); 它不同于函数的定义(功能定义)
例8.5 : 求二实数之和 main ( ) { float add( float x,float y); float a, b, c; scanf("%f, %f",&a, &b); c=add(a, b); printf ("sum= %f";c); } float add( float x, float y);
c语言程序设计第6章PPT课件
End Sub
第20页/共49页
6.2 函数过程的定义与调用
• 【例6-6】 编写计算阶乘的函数过程,当用户单击窗体时,利用下列近似公式计算 (直到最后一项小于10-7为止)。
Private Sub Form_Click() 调用函数Fact的程序代码如下:
Dim n!
Private Function Fact(x!)
c > a + b Then MsgBox "输入的三条边
不能构成一个三角形!" Else Call area(a, b, c, w) txtMj.Text = Str(w) End If
End Sub
第11页/共49页
6.1 子过程的定义与调用
• 2. 把过程名作为一个语句来用 语法: 过程名 [实参1[,实参2……]] 它与Call语句的不同点是:去掉了Call关键字和实参列表的括号。 如上例中可以改成:area a,b,c,w
(3)在函数体内,函数名可以当变量使用,函数
第14页/共49页
6.2 函数过程的定义与调用
• (4)如果函数体内没有给函数名赋值,则返回对应类型的缺省值, 数值函数返回0,字符串函数返回空字符串,变体型函数返回Empty。
• (5)As类型:是指函数返回值的类型,若省略,则函数返回变体类 型值(Variant)。
• 6.3.2 变量的作用域 • 1. 局部变量 在过程内部(如Command1_Click)使用Dim或者Static关键字来声明的变量,只在声明它们的 过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的 局部变量而互不影响。
第26页/共49页
6.3 变量、过程的作用域
《C语言函数章节》课件
局部变量与全局变量
1
局部变量
了解索全局变量的定义和使用方式,以及注意事项。
3
变量的命名规范
学习良好的变量命名规范,提高代码的可读性和维护性。
函数递归
递归原理
数学递归
探索函数在自身内部调用的原理, 以及递归函数的特点。
展示一些数学问题的递归解法, 如阶乘、斐波那契数列等。
递归数据结构
介绍递归数据结构的概念和应用, 如二叉树和链表。
函数指针
指针基础
回顾指针的概念和用法,为后续学习函数指针做准 备。
函数指针的定义
学习如何定义和声明函数指针,以及对函数指针的 操作。
函数库与库函数
1 函数库
介绍函数库的概念和作用,如标准库和第三方库。
函数定义与调用
函数定义
学习如何在C语言中定义一个函数,包括函数名、 参数和返回值。
函数调用
了解如何在代码中调用函数,并传递参数和接收返 回值。
函数参数传递
1 值传递
了解值传递的概念和实现 方式,以及在函数调用时 传递参数的作用。
2 引用传递
探索引用传递的特性和用 法,包括指针和引用的概 念。
3 参数默认值
2 常用库函数
展示一些常用库函数的使用,如字符串操作、文件操作等。
3 自定义库函数
了解如何编写和使用自定义的库函数,提高代码的复用性。
内联函数和宏定义
1
内联函数
探索内联函数的特性和使用场景,以及与普通函数的区别。
2
宏定义
学习宏定义的概念和用法,如宏函数和宏常量。
3
内联函数和宏的对比
比较内联函数和宏定义在使用上的优势和劣势。
c语言函数PPT课件
无参函数 有参函数
使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
Ch7_201.c
§ 6.1 函数 一、函数的定义
一般格式
函数返回值类型 缺省int型
无返回值void
合法标识符
函数类型 函数名(形参类型说明表)
第六章 函数
模块化程序设计
❖基本思想:将一个大的程序按功能分割成一些小模块, ❖特点:
各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充
C是模块化程序设计语言
C程序
源程序文件1 源程序文件i 源程序文件n
❖函数表达式: 例 m=max(a,b)*2; ❖函数参数: 例 printf(“%d”,max(a,b));
m=max(a,max(b,c));
例 参数求值顺序
main() { int i=2,j=2,p;
p=f(i,j); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); }
{ 说明部分 语句部分
}
函数体
例或例{p{pi{}rnri例intppnzr无i{}t有mrren=tisiisntttnnxua参zrta参t有amtte>xr=riff例zrnnt({(((y函x(ua;d函vi参t““(?n>xrz)uo**z}nx数t()y数mi**;函i;空(:dx?ny**zm,xt());**数函;y:xy**y)现,(**(;数in**)代t**现y**风)**代\\nn函格风””))数);;格体}})为空
C语言程序设计函数与宏定义
例 计算x的立方
#include <stdio.h> float cube(float x) { return(x*x*x); } main( ) { float a, product; printf("Please input value of a:"); scanf("%f",&a); product=cube(a); printf(”Cube of %.4f is %.4f\n",a,product); }
a c d f b e c d
b a
– C程序的结构如图
6.1 概述
说明:
1. C程序的执行从main函数开始,调用其 他函数后仍回到main函数,程序在main 函数结束时结束。 2. 所有的子函数都是平行的,任何子函数
都不属于其他函数。
3. 从用户角度看,函数分为
4.
例 6-1 #include<stdio.h> – 标准函数(库函数):由 void printstar( ) { 系统提供 printf(“**********\n”); } – 自定义函数 void printmessage() 从函数形式看,可分为 { printf(“Hello,World!\n”); printstar(); – 无参函数:如printstar() } – 有参函数:如printf(…) Void main() { printstar(); printmessage(的方法:函数的返回值 也就是函数值,是一个确定的值。 ① 如果一个函数有返回值,就必须 用return语句。 ② 一个函数中可以有一个以上的 return语句,但不论执行到哪个 return都将结束函数的调用,返回 主函数。 ③ return语句中的括号可以省略; return后面的值可以是一个表达式
C语言函数篇讲解ppt课件
b函数结束
精选版课件ppt
20
main( ) { int x,y,sum;
x=5; y=6; sum=add(x,y); printf(“%d”,sum); }
add(int a ,int b) { int z;
z=a+fun(b); return z; } 运行结果:
41
精选版课件ppt
汉诺塔问题 ( Hanoi)
数调用任意多次。 4. 从用户角度看,函数分为两种:
① 标准函数:即库函数,由系统提供。
② 用户自定义函数:用户自己定义的。 5. 从函数形式看,函数分为两种:
①无参函数。
②有参函数。
精选版课件ppt
3
6.2 函数定义的一般形式
一 函数定义的一般形式
列表
类型标识符 函数名(类型1 形参1,类型2 形参2,…) { 声明部分 语句 }
二 说明:
1.所有函数在定义时都是互相独立的,即不能嵌套定义; 2.类型标识符:说明了函数返回值的类型,当返回值为
int时,可省略不写; 3.函数名:遵循标识符的命名规则;同一个函数中函数名
必须唯一;
精选版课件ppt
4
4.形参:只能是变量,每个形参前要有类型名;当定义的 函数没有形参时叫作“无参函数” ;
a 10 20 b
alter(a, b);
printf(“a=%d,b=%d\n”,a,b); x 1200 }
210 y
alter(int x, int y) { int t;
t=x; x=y; y=t; }
总结:形参的值发生 改变,并不能 影响实参。
精选版课件ppt
9
三 函数的返回值
《C语言程序设计及应用》课件第6章函数
第 6章
6.1.4 函数的返回值
目录 上一页 下一页 退出
(2)函数值的类型和函数定义中函数的类型应 保持一致。如果两者不一致,则以函数类型为 准,自动进行类型转换。
(3)如函数值为整型,在函数定义时可以省去 类型说明。
(4)不返回函数值的函数,可以明确定义为 “空类型”,类型说明符为“void”。 形式为:
C语言程序设计及应用
第 6章
6.2.2 函数调用方式
目 录 【例6-4】程序运行结果如下图所示。
上一页 下一页 退出
C语言程序设计及应用
第 6章
6.2.3 函数调用中的值传递方式
目录 上一页 下一页 退出
实参与形参按顺序对应,一一传递 数据。所以,这种函数调用又称传 值调用。
实参变量对形参变量的数据传递为 “值传递”,即单向传递,只能由 实参传给形参,而不能由形参传回 给实参。在内存中,形参与实参各 自有不同的存储单元。
【例6-4】
void fun(); main() {
int count;
/*对函数进行说明*/
for (count=1;count<=3;count++) fun();
/*
循环调用fun函数*/
}
void fun()
/* 定义fun函数*/
{
int i=1;
i+=2;
printf("%d",i);
}
函数的形参和实参具有以下特点:
(1)形参变量只有在被调用时才分配内存单元,
在调用结束时,即刻释放所分配的内存单元。
(2)在进行函数调用时,应预先用赋值、输入 等办法使实参获得确定值。
chap6(函数与宏定义)39页PPT文档
z=x>y ? x : y;
return(z); }
3.“ 空函数 ”
这两行可以写成一行: int max(int x, int y)类型说明符 函数名( ) Nhomakorabea{}
“空函数”什么操作也不做。其作用是在此处留一函 数的位置,以便将来扩充功能之用。函数名也在将来 换取实际的函数名。
26.12.2019
3
6.3 函数参数和函数的值
所有函数都是平行的,相互独立不能嵌套,但可以相 互调用(main函数不能被其它函数调用)。
C 函数分标准函数(库函数)和自定义函数。 C 函数本身分有参函数和无参函数。
26.12.2019
1
6.2 函数定义的一般形式
1.无参函数的定义形式
类型标识符 函数名( ) { 说明部分 ;
语句;
无分号!
}
无参函数一般不需要返回函数值,可以省略类型标识符。
2.有参函数的定义形式
类型标识符 函数名(形式参数表) 形式参数说明; { 说明部分 ;
语句;
}
26.12.2019
无分号!
2
例: int max(x,y) int x, y; { int z;
/ 形式参数说明 / / 函数体中的说明部分 /
1.形式参数和实际参数
例6.1 从键盘输入两个数,输出其中较大的一个。
main( )
{ int a, b, c ;
scanf(“%d,%d”, &a, &b);
c=max(a,b);
/ a, b为实际参数 /
printf(“Max is %d”,c);
} max(x,y)
/ x, y为形式参数 /
第六章函数与宏定义PPT课件
如:int x, int y, int z
这表示形参变量有三个:x, y, z。它们的类型都是int型。
在第二种函数定义的形式中,[ 形 参 表 ] 是 一 系 列 用 逗号分开的形参变量。如:x, y, z
5.函数语句体是放在一对花括号{ }中,由局部数据 类型描述和功能实现两部分组成。
11.11.2020
5
C 程序设计基础教程
第六章函数与宏定 义
6.函数返回语句的形式有以下两种: ①函数无返回值的情况:return; ②函数有返回值的情况:return(表达式的值); 在第②种情况下要注意“表达式的值”的类型必须与 函数返回值的类型相一致。
例如:求两个任意整数的绝对值的和,用函数 abs_sum()实现。
C语言中,函数可分为两类 :
一类是由系统定义的标准函数,又称为库函数,其函数 声明一般是放在系统的include目录下以.h为后缀的头文 件中,如在程序中要用到某个库函数,必须在调用该函 数之前用#include<头文件名>命令将库函数信息包含到 本程序中。
另一类函数是自定义函数 ,两种形式: 第一种:函数声明、函数调用、函数定义。 第二种:函数定义、函数调用。
第六章函数与宏定 义
第六章 函数与宏定义
§6.1 函数概念 §6.2 变量作用域和存储类型
§6.3 内部函数与外部函数
§6.4 递归函数设计和调用
§6.6 综合范例
11.11.2020
1
C 程序设计基础教程
§6.1 函数概念
第六章函数与宏定 义
C语言允许把问题设计成一个一个的模块,程序通过调用 模块功能来解决问题。这些模块通常都是通过函数来实 现的,又可称其为函数模块。
C语言程序设计基础教程带参数宏定义介绍课件
04 示例说明:带参数宏定义可以简化代码, 提高代码可读性和可维护性。
代码复用
减少重复代码,提高代码 可读性和可维护性
便于修改和维护,减少出 错的可能性
提高代码执行效率,减少 编译时间
便于模块化编程,提高代 码重用性
提高代码可读性
01
宏定义可以简化代码,提 高可读性
C语言程序设计基础教程带 参数宏定义介绍课件
演讲人
目录
01. C语言程序设计基础 02. 带参数宏定义 03. 宏定义在C语言中的作用 04. 宏定义注意事项
基本语法
● 变量定义:使用关键字`int`、`float`等定义变量类型 ● 赋值语句:使用`=`为变量赋值 ● 控制结构:使用`if`、`else`、`while`等控制程序流程 ● 函数定义:使用`void`、`int`等定义函数类型,使用`return`返回函数值 ● 指针操作:使用`*`、`&`等操作符进行指针操作 ● 结构体和联合体:使用`struct`、`union`等定义结构体和联合体类型 ● 预处理指令:使用`#include`、`#define`等预处理指令进行宏定义和文件包含 ● 输入输出:使用`printf`、`scanf`等函数进行输入输出操作 ● 内存管理:使用`malloc`、`free`等函数进行动态内存分配和释放 ● 文件操作:使用`fopen`、`fclose`等函数进行文件操作
宏定义不能进行调试, 而函数可以进行调试
宏定义使用规范
● 宏定义必须使用大写字母 ● 宏定义必须使用括号 ● 宏定义必须使用分号 ● 宏定义必须使用#define指令 ● 宏定义必须使用有意义的名称 ● 宏定义必须使用正确的语法 ● 宏定义必须使用正确的参数 ● 宏定义必须使用正确的返回值 ● 宏定义必须使用正确的注释 ● 宏定义必须使用正确的版本控制
C语言函数和宏定义资料
函数和宏定义一.目的和要求1、掌握函数的定义方法和调用规则。
2、掌握C语言程序中主调函数和被调用函数之间进行数据传递的规则。
3、了解函数的返回值及它的类型,并正确使用它。
4、了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念。
5、练习递归函数的使用。
6、理解宏的概念,掌握定义无参宏和带参宏的方法。
了解文件包含的概念,掌握其用法。
7、理解内部函数和外部函数,了解外部函数的编译和连接的方法。
二.相关知识1、函数的概念函数是一个可以反复使用的程序段,从其它的程序段中均可以通过调用语句来执行这段程序,完成既定的工作。
从程序设计的角度来看,函数可以分为两种:①标准函数,即库函数。
②自定义函数。
从函数形式的角度来看,函数也可分为无参函数和有参函数两种。
2、函数的定义一个函数在被调用之前必须先定义,函数定义的一般形式:存储类型数据类型函数名(形式参数表){ 数据定义语句序列;执行语句序列;}3、函数的调用函数调用按函数是否有返回值分为有返回值的函数调用和无返回值的函数调用。
其格式如下:函数名(实参表)[;]无返回值的函数调用格式,最后要有一个语句结束符“分号”。
4、函数的声明函数声明是指在主调函数中,对在本函数中将要被调用的函数提前作的必要的声明。
函数声明的一般格式为:存储类型数据类型函数名(形式参数表);注意:①当函数定义在前,主调函数的定义在后时,可以缺省函数声明。
②如果被调的用户函数和主调函数不在同一编译单位,则在定义函数的编译单位应将该函数定义成extern,在主调函数的函数体中将该函数说明为extern。
5、函数调用中的数据传递方法C语言规定在函数间传递数据有四种方式:值传递方式、地址传递方式、返回值方式、全局变量传递方式。
①值传递方式所传递的是参数值,其特点是“参数值的单向传递”。
②地址传递方式所传递的是地址,其特点是“参数值的双向传递”。
③返回值方式不是在形式参数和实际参数之间传递数据,而是通过函数调用后直接返回一个值到主调函数中。
第六章 函数
第六章 函数
算法实现部份
} 函数定义包含函数说明部分和函数体。
Page 9
6.2 函数的定义
函数定义的一般形式
第六章 函数
函数说明部分“类型说明符 函数名(带类型说明的形式参数表列)”称 为函数头,又称为函数原型,是函数进行交互的接口。函数名是用户 标识符,用来唯一标识一个函数。带类型说明的形式参数表列说明了 函数形参的类型及形参变量名,用逗号分开。类型说明符定义函数的 类型,函数类型是函数返回值的类型,可以是基本数据类型,也可以
Page 27
6.5 变量的作用域与生存期
变量的属性 变量的属性包括操作属性和存储属性。
第六章 函数
变量类型决定了变量的取值范围、占用存储单元数量等操作属性。变 量的存储属性决定了变量的作用域和变量的生存期。变量的作用域指 变量的作用范围,按照变量的作用域可把变量分为全局变量和局部变
Page 5
6.1 概述
函数分类 1.从用户角度分类 从用户角度,函数可分为库函数和用户自定义函数。
第六章 函数
库函数是由C编译系统提供,用户可直接使用而无须定义的函数。C 语言把一些常用功能预先编写为函数,放在函数库中。
用户自定义函数是由用户根据自己的需要编写的具有独立功能的函数
。
Page 6
表示;函数类型是函数实现功能后结果的类型。
函数体是函数功能的实现,实现函数功能的程度段书应写在“{ }”内 。
Page 3
6.1 概述
函数概述 2.函数声明
第六章 函数
函数声明的作用是通知编译系统被调函数的有关信息(函数类型、名 称、参数类型及数量),以便函数调用时,编译系统能够正确识别该 函数,确保函数调用正确进行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
void c( void )
{
printf( "\nglobal x is %d on entering c\n", x );
x *= 10;
printf( "global x is %d on exiting c\n", x );
}
C 程序设计基础教程
20/49
07:11
程序运行结果: 后6次函数调用
自定义一个函数mul(),用于求两数的乘积,程序: /*exam6_3.c 求两个数的乘积*/
#include <stdio.h>
float mul(float a,float b);
main()
{
float x,y,z;
scanf("%f %f",&x,&y); z=mul(x,y); /* ① */
x=x+10;
y=y-10; mul(x,y);
/* ② */
C 程序设计基础教程
12/49
07:11
x=x*2;
第六章函数与宏定 义
y=y*2;
printf("z=%f,mul(%f,%f)=%f\n",z,x,y,mul(x,y)); /* ③ * /
}
float mul(float a,float b)
C 程序设计基础教程
5/49
07:11
第六章函数与宏定 义
6.函数返回语句的形式有以下两种: ①函数无返回值的情况:return; ②函数有返回值的情况:return(表达式的值); 在第②种情况下要注意“表达式的值”的类型必须与 函数返回值的类型相一致。
例如:求两个任意整数的绝对值的和,用函数 abs_sum()实现。
C 程序设计基础教程
8/49
07:11
§6.1.3 函数的传值方式
第六章函数与宏定 义
函数的传值方式:
采用实参表将每一个实参的值相应地传递给每一个形
参变量,形参变量在接收到实参表传过来的值时,会在内 存临时开辟新的空间,以保留形参变量的值,当函数执行 完毕时,这些临时开辟的内存空间会被释放,并且形参的 值在函数中不论是否发生变化,都不会影响到实参变量的 值的变化,这就是函数的传值方式。
local x in outer scope of main is 5
C 程序设计基础教程
18/49
07:11
第六章函数与宏定 义
printf( "local x in main is %d\n", x ); getchar(); return 0; } void a( void ) { int x = 25; printf( "\nlocal x in a is %d after entering a\n", x ); ++x; printf( "local x in a is %d before exiting a\n", x ); }
{
return a*b;
}
程序运行结果: 5 6 z=30.000000,mul(30.000000,-8.000000)=-240.000000
C 程序设计基础教程
13/49
07:11
程序说明:
第六章函数与宏定 义
注释①处调用函数后的返回值赋给变量z。
注释②处调用函数后的返回值没有赋给任何变量, 函数的返回值被丢失。
{
if(m<0)
m=-m;
if(n<0)
n=-n;
return m+n;
}
11/49
07:11
程序运行结果: 7 12 5 sum is 24
C 程序设计基础教程
注意:
第六章函数与宏定 义
对于有返回值的函数,调用时若没有把它赋给某个变量,
仍然是可以的,只是函数的返回值有可能会被丢失。
【例6-3】 求任意两数的乘积。
C语言中,函数可分为两类 :
一类是由系统定义的标准函数,又称为库函数,其函数 声明一般是放在系统的include目录下以.h为后缀的头文 件中,如在程序中要用到某个库函数,必须在调用该函 数之前用#include<头文件名>命令将库函数信息包含到 本程序中。
另一类函数是自定义函数 ,两种形式: 第一种:函数声明、函数调用、函数定义。 第二种:函数定义、函数调用。
int x = 5; printf("local x in outer scope of main is %d\n", x );
C 程序设计基础教程
17/49
07:11
第六章函数与宏定 义
{
int x = 7;
printf( "local x in inner scope of main is %d\n", x );
自定义函数在程序中的使用顺序有两种形式:
① 先进行函数声明,再进行函数调用,函数定义放在 函数调用之后。函数声明在函数调用之前。
② 函数定义放在函数调用之前。
C 程序设计基础教程
9/49
07:11
第六章函数与宏定
【例6-1】 编程序,通过调用函数abs-sum(),求义任意 两个整数的绝对值的和。
21/49
07:11
第六章函数与宏定 义
最后一次输出: local x in main is 5
C 程序设计基础教程
}
printf( "local x in outer scope of main is %d\n", x );
a();
b();
c();
a();
前三次输出结果:
b();
local x in outer scope of main is 5
c();
local x in inner scope of main is 7
local x in a is 25 after entering a local x in a is 26 before exiting a
local static x is 50 on entering b local static x is 51 on exiting b
global x is 1 on entering c global x is 10 on exiting c
全局变量:在函数外面定义的变量称为全局变量,全局变 量的作用域是从该变量定义的位置开始,直到源文件结束。 在同一文件中的所有函数都可以引用全局变量。
C 程序设计基础教程
15/49
07:11
第六章函数与宏定
局部变量和全局变量的作用域如图所示: 义
C 程序设计基础教程
16/49
07:11
第六章函数与宏定
/*exam6_1.c 调用函数求两整数绝对值的和*/
#include <stdio.h>
int abs_sum(int m,int n);
main()
{
int x,y,z;
scanf("%d%d",&x,&y); z=abs_sum(x,y);
程序运行结果:
printf("sum is %d",z);
【例6-4】 变量作用域应用举例,阅读下面的程义序, 注意区分局部变量和全局变量的作用域。
/*exam6_4.c 变量作用域举例*/ #include <stdio.h> void a( void ); void b( void ); void c( void ); int x = 1; main() {
local x in a is 25 after entering a local x in a is 26 before exiting a
local static x is 51 on entering b local static x is 52 on exiting b
global x is 10 on entering c global x is 100 on exiting c
/*直接调用库函数来计算m和n的绝对值 */ int abs_sum(int m, int n) {
return (abs(m)+abs(n)); } /*函数abs()是在头文件math.h中声明的*/
C 程序设计基础教程
6/49
07:11
函数定义如下: int abs_sum(int m, int n) { if (m<0)
m=-m; if(n<0)
n=-n; return(m+n); }
第六章函数与宏定 义
§6.1.2 函数声明和调用
一.函数的声明 函数声明的一般形式:
[存储类型符] [返回值类型符] 函数名([形参说明表]); 如:int abs-sun(int m, int n);
C 程序设计基础教程
7/49
07:11
C 程序设计基础教程
19/49
07:11
void b( void )
第六章函数与宏定 义
{
static int x = 50;
printf( "\nlocal static x is %d on entering b\n", x );
++x;
printf( "local static x is %d on exiting b\n", x );
4.在第一种函数定义的形式中,[形参说明表]是一系 列用逗号分开的每个形参变量说明。
如:int x, int y, int z
这表示形参变量有三个:x, y, z。它们的类型都是int型。