内容正文:
第6章 函数
6.1函数概述
6.2函数的定义和说明
6.3函数的调用
6.4函数的参数
6.6变量的存储类型
6.5函数的嵌套调用与递归调用
大学C/C++语言程序设计程序设计 第6章 函数
6.6 变量的存储类型
大学C/C++语言程序设计程序设计 第6章 函数
#include <stdio.h>
void swap(int a,int b)
{ int temp;
temp=a; a=b; b=temp;
printf("%d,%d
",a,b);
}
main()
{ int x=10,y=30;
printf("%d,%d
",x,y);
swap(x,y);
printf("%d,%d
",x,y); }
举例:写出下列程序运行结果。
运行情况如下:
10,30
30,10
10,30
a,b,temp 在swap函数调用时分配内存,得到实参的值, swap函数调用结束,内存被收回。
a,b,temp只在swap函数内有效,在函数执行时间内存在
大学C/C++语言程序设计程序设计 第6章 函数
问题: 能不能设置变量可以在程序运行期内一直存在?有没有变量能在所有函数中通用呢?
没问题的!
答案就是设置变量的存储类型
大学C/C++语言程序设计程序设计 第6章 函数
6.6.1变量的生存期和作用域
大学C/C++语言程序设计程序设计 第6章 函数
6.6.2 变量的存储类型
大学C/C++语言程序设计程序设计 第6章 函数
完整的变量定义: [存储特性] 数据类型 变量名;
1变量的存储特性
自动型 auto(默认存储类型)
寄存器型 register(很少用)
外部型 extern
静态型 static
静态存储
动态存储
大学C/C++语言程序设计程序设计 第6章 函数
局部变量分为:
自动局部变量、静态局部变量
大学C/C++语言程序设计程序设计 第6章 函数
1.自动局部变量(auto)
函数中的局部变量,不做任何存储类别的说明都为自动变量。
定义形式:[auto] 类型说明符 变量名;
说明:
•自动变量必须在一个函数体的内部。
•自动变量不赋初值,其值不确定。每调用一次,重新赋值一次。
•函数的形参也是自动变量。
•“自动”体现在进入语句块时自动申请内存,退出时自动释放内存;
函数体内的自动变量在函数内有效;
复合语句的自动变量在复合语句里有效。
大学C/C++语言程序设计程序设计 第6章 函数
float f1(auto int a)
{ auto int b,c;
…….
}
main()
{auto int m,n;
…..
{auto int s ,t;
…..
}
…….
}
a,b,c有效
s,t有效
m,n有效
大学C/C++语言程序设计程序设计 第6章 函数
void swap(int a,int b )
{ auto int t;
t = a; a = b; b = t; printf("swap:a=%d,b=%d
",a,b);
}
main()
{ auto int x,y;
x=3;
y=5;
swap( x,y);
swap( x,y);
printf ("main:x=%d,y=%d",x,y);
}
例1 .auto局部变量
swap:a=5,b=3
swap:a=5,b=3
main:x=3,y=5
大学C/C++语言程序设计程序设计 第6章 函数
例2 求下列程序的运行结果 (复合语句内部变量)
int main()
{ int a, b, c;
a=1; b=2;
c = a+b;
{ in