📄 24.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="Author" content="wdg">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>网上学堂 --> C语言编程宝典之一 --> 4. 变量</title>
</head>
<body>
<p> </p>
<div align="center"><center>
<table border="1" cellpadding="4" width="640"
bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
<tr>
<td bgcolor="#FFE6B0" bordercolor="#8080FF" class="p9"><font
color="#BB0000">导航条:--></font> <a
href="../../index.html">网上学堂</a> --> <a
href="../tcindex.htm"><font face="宋体">C</font>语言编程宝典之一</a>
--> 4. 变量 </td>
</tr>
<tr>
<td bordercolor="#8080FF" class="p9"> 4.1
变量说明 <br>
Turbo C2.0规定所有变量在使用前都必须中以说明。一条变量说明语句由数据
<br>
类型和其后的一个或多个变量名组成。变量说明的形式如下:
<br>
类型 <变量表>; <br>
这里类型是指Turbo C2.0的有效数据类型。变量表是一个或多个标识符名,
每 <br>
个标识符之间用","分隔。 <br>
例如: <br>
int i, j, k; unsigned char c, str[5], *p; <p>
4.2 变量种类 <br>
变量可以在程序中三个地方说明:
函数内部、函数的参数定义中或所有的函数
<br>
外部。根据所定义位置的不同,
变量可分为局部变量、形式参数和全程变量。
<br>
一、局部变量 <br>
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
<br>
行说明, 当auto省略时,
所有的非全程变量都被认为是局部变量,
所以auto实际上 <br>
从来不用。 <br>
局部变量在函数调用时自动产生,
但不会自动初始化, 随函数调用的结束, 这 <br>
个变量也就自动消失了,
下次调用此函数时再自动产生, 还要再赋值,
退出时又自 <br>
动消失。 </p>
<p> 二、形式参数 <br>
形式参数是指在函数名后面的小括号里定义的变量,
用于接受来自调用函数的 <br>
参数。形式参数在函数内部可以象其它局部变量那样来作用。
<br>
例如: <br>
puthz(int x, int y, int color,
char *p) <br>
{ <br>
int i, j, k; /*定义局部变量*/ <br>
<程序体> <br>
} <br>
其中x, y, color, *p为函数的形式参数,
不需要再进行说明就可在该函数内 <br>
直使用。 </p>
<p> 三、全程变量 <br>
全程变量是指在所有函数之外说明的变量,
它在整个程序内部者是"可见的", <br>
可以被任何一个函数使用,
并且在整个程序的运行中都保留其值。全程变量只要满
<br>
足在使用它以前和函数以外这两个条件,
可在程序的任何位置进行说明, 习惯上通 <br>
常在程序的主函数前说明。 <br>
例如: <br>
#include<stdio.h> <br>
int test;
/*定义全程变量*/ <br>
void f1(int x, float y); /*子函数说明*/
<br>
void f2(void);
/*子函数说明*/ <br>
main() <br>
{ <br>
test=5;
/*给全程变量赋值*/ <br>
f1(20, 5.5); /*调用有形式参数的子函数f1()*/
<br>
/*test的值变成115*/ <br>
f2();
/*调用f2(), test的值变为1150*/ <br>
} <br>
void f1(int x, float y) <br>
{ <br>
float z;
/*z定义为局部变量*/ <br>
z=x*y;
/*计算*/ <br>
test=test+z; <br>
} <br>
void f2(void) <br>
{ <br>
int count=10; /*定义局部变量并初始化*/
<br>
test=test*count; <br>
} </p>
<p>
由于全程变量可被整个程序内的任何一个函数使用,
所以可作为函数之间传递 <br>
参数的手段, 但全程变量太多时,
内存开销变大。 <br>
4.3 变量存储类型 <br>
Turbo C2.0支持四种变量存储类型。说明符如下:
<br>
auto
static extern
register <br>
下面分别来介绍。 <br>
一、auto <br>
auto称为自动变量,
已在前面作了介绍, 这里不再重复。 <br>
二、static <br>
static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
<br>
1. 静态局部变量 <br>
它与局部变量的区别在于:
在函数退出时, 这个变量始终存在,
但不能被其它 <br>
函数使用, 当再次进入该函数时,
将保存上次的结果。其它与局部变量一样。
<br>
2. 静态全程变量 <br>
Turbo C2.0允许将大型程序分成若干独立模块文件分别编译,
然后将所有模块 <br>
的目标文件连接在一起, 从而提高编译速度,
同时也便于软件的管理和维护。静态 <br>
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与
<br>
全程变量的区别是:
全程变量可以再说明为外部变量(extern),
被其它源文件使用, <br>
而静态全程变量却不能再被说明为外部的,
即只能被所在的源文件使用。 <br>
三、extern <br>
extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,
还要 <br>
被其它文件使用。因此,
必须将全程变量通知每一个程序模块文件,
此时可用 <br>
extern来说明。 <br>
例如: <br>
文件1为file1.c
文件2为file2.c <br>
int i, j;/*定义全程变量*/
extern int i, j;/*说明将i, j从 <br>
文件1中复制过来*/ <br>
char c;
extern char c; /*将c复制过来*/ <br>
void func1(int k);
func2() /*用户定义函数*/
<br>
{ <br>
main()
static float k;/*定义静态变量*/ <br>
{
i=j*5/100; <br>
func1(20);/*调用函数*/
k=i/1.5; <br>
func2();
. <br>
.
. <br>
.
. <br>
.
} <br>
} <br>
func1(int k) /*用户定义函数*/
<br>
{ <br>
j=k*100; <br>
} </p>
<p> 对于以上两个文件file1.c和file2.c,
用Turbo C2.0的集成开发环境进行编译 <br>
连接时, 首先应建立一个.prj的文件。例如file.prj,
该文件内容如下: <br>
file1.c <br>
file2.c <br>
然后将file.prj的文件名写入主菜单Project中的Project
Name项中。 再用F9 <br>
编译连接, 就可产生一个文件名为fioe.exe的可执行文件。
<br>
外部变量和FORTRAN语言中的COMMOM定义的公共变量一样。
<br>
四、register <br>
register称为寄存器变量。它只能用于整型和字符型变量。定义符register说
<br>
明的变量被Turbo C2.0存储在CPU的寄存器中,
而不是象普通的变量那样存储在内 <br>
存中, 这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量,
<br>
一旦超过两个,
编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量
<br>
来处理。因此,
寄存器变量常用在同一变量名频繁出现的地方。
<br>
另外,
寄存器变量只适用于局部变量和函数的形式参数,
它属于auto型变量, <br>
因此,
不能用作全程变量。定义一个整型寄存器变量可写成:
<br>
register int a; <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -