?? 24.htm
字號(hào):
<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>網(wǎng)上學(xué)堂 --> 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">導(dǎo)航條:--></font> <a
href="../../index.html">網(wǎng)上學(xué)堂</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規(guī)定所有變量在使用前都必須中以說明。一條變量說明語句由數(shù)據(jù)
<br>
類型和其后的一個(gè)或多個(gè)變量名組成。變量說明的形式如下:
<br>
類型 <變量表>; <br>
這里類型是指Turbo C2.0的有效數(shù)據(jù)類型。變量表是一個(gè)或多個(gè)標(biāo)識(shí)符名,
每 <br>
個(gè)標(biāo)識(shí)符之間用","分隔。 <br>
例如: <br>
int i, j, k; unsigned char c, str[5], *p; <p>
4.2 變量種類 <br>
變量可以在程序中三個(gè)地方說明:
函數(shù)內(nèi)部、函數(shù)的參數(shù)定義中或所有的函數(shù)
<br>
外部。根據(jù)所定義位置的不同,
變量可分為局部變量、形式參數(shù)和全程變量。
<br>
一、局部變量 <br>
局部變量是指在函數(shù)內(nèi)部說明的變量(有時(shí)也稱為自動(dòng)變量)。用關(guān)鍵字auto進(jìn)
<br>
行說明, 當(dāng)auto省略時(shí),
所有的非全程變量都被認(rèn)為是局部變量,
所以auto實(shí)際上 <br>
從來不用。 <br>
局部變量在函數(shù)調(diào)用時(shí)自動(dòng)產(chǎn)生,
但不會(huì)自動(dòng)初始化, 隨函數(shù)調(diào)用的結(jié)束, 這 <br>
個(gè)變量也就自動(dòng)消失了,
下次調(diào)用此函數(shù)時(shí)再自動(dòng)產(chǎn)生, 還要再賦值,
退出時(shí)又自 <br>
動(dòng)消失。 </p>
<p> 二、形式參數(shù) <br>
形式參數(shù)是指在函數(shù)名后面的小括號(hào)里定義的變量,
用于接受來自調(diào)用函數(shù)的 <br>
參數(shù)。形式參數(shù)在函數(shù)內(nèi)部可以象其它局部變量那樣來作用。
<br>
例如: <br>
puthz(int x, int y, int color,
char *p) <br>
{ <br>
int i, j, k; /*定義局部變量*/ <br>
<程序體> <br>
} <br>
其中x, y, color, *p為函數(shù)的形式參數(shù),
不需要再進(jìn)行說明就可在該函數(shù)內(nèi) <br>
直使用。 </p>
<p> 三、全程變量 <br>
全程變量是指在所有函數(shù)之外說明的變量,
它在整個(gè)程序內(nèi)部者是"可見的", <br>
可以被任何一個(gè)函數(shù)使用,
并且在整個(gè)程序的運(yùn)行中都保留其值。全程變量只要滿
<br>
足在使用它以前和函數(shù)以外這兩個(gè)條件,
可在程序的任何位置進(jìn)行說明, 習(xí)慣上通 <br>
常在程序的主函數(shù)前說明。 <br>
例如: <br>
#include<stdio.h> <br>
int test;
/*定義全程變量*/ <br>
void f1(int x, float y); /*子函數(shù)說明*/
<br>
void f2(void);
/*子函數(shù)說明*/ <br>
main() <br>
{ <br>
test=5;
/*給全程變量賦值*/ <br>
f1(20, 5.5); /*調(diào)用有形式參數(shù)的子函數(shù)f1()*/
<br>
/*test的值變成115*/ <br>
f2();
/*調(diào)用f2(), test的值變?yōu)?150*/ <br>
} <br>
void f1(int x, float y) <br>
{ <br>
float z;
/*z定義為局部變量*/ <br>
z=x*y;
/*計(jì)算*/ <br>
test=test+z; <br>
} <br>
void f2(void) <br>
{ <br>
int count=10; /*定義局部變量并初始化*/
<br>
test=test*count; <br>
} </p>
<p>
由于全程變量可被整個(gè)程序內(nèi)的任何一個(gè)函數(shù)使用,
所以可作為函數(shù)之間傳遞 <br>
參數(shù)的手段, 但全程變量太多時(shí),
內(nèi)存開銷變大。 <br>
4.3 變量存儲(chǔ)類型 <br>
Turbo C2.0支持四種變量存儲(chǔ)類型。說明符如下:
<br>
auto
static extern
register <br>
下面分別來介紹。 <br>
一、auto <br>
auto稱為自動(dòng)變量,
已在前面作了介紹, 這里不再重復(fù)。 <br>
二、static <br>
static稱為靜態(tài)變量。根據(jù)變量的類型可以分為靜態(tài)局部變量和靜態(tài)全程變量。
<br>
1. 靜態(tài)局部變量 <br>
它與局部變量的區(qū)別在于:
在函數(shù)退出時(shí), 這個(gè)變量始終存在,
但不能被其它 <br>
函數(shù)使用, 當(dāng)再次進(jìn)入該函數(shù)時(shí),
將保存上次的結(jié)果。其它與局部變量一樣。
<br>
2. 靜態(tài)全程變量 <br>
Turbo C2.0允許將大型程序分成若干獨(dú)立模塊文件分別編譯,
然后將所有模塊 <br>
的目標(biāo)文件連接在一起, 從而提高編譯速度,
同時(shí)也便于軟件的管理和維護(hù)。靜態(tài) <br>
全程變量就是指只在定義它的源文件中可見而在其它源文件中不可見的變量。它與
<br>
全程變量的區(qū)別是:
全程變量可以再說明為外部變量(extern),
被其它源文件使用, <br>
而靜態(tài)全程變量卻不能再被說明為外部的,
即只能被所在的源文件使用。 <br>
三、extern <br>
extern稱為外部變量。為了使變量除了在定義它的源文件中可以使用外,
還要 <br>
被其它文件使用。因此,
必須將全程變量通知每一個(gè)程序模塊文件,
此時(shí)可用 <br>
extern來說明。 <br>
例如: <br>
文件1為file1.c
文件2為file2.c <br>
int i, j;/*定義全程變量*/
extern int i, j;/*說明將i, j從 <br>
文件1中復(fù)制過來*/ <br>
char c;
extern char c; /*將c復(fù)制過來*/ <br>
void func1(int k);
func2() /*用戶定義函數(shù)*/
<br>
{ <br>
main()
static float k;/*定義靜態(tài)變量*/ <br>
{
i=j*5/100; <br>
func1(20);/*調(diào)用函數(shù)*/
k=i/1.5; <br>
func2();
. <br>
.
. <br>
.
. <br>
.
} <br>
} <br>
func1(int k) /*用戶定義函數(shù)*/
<br>
{ <br>
j=k*100; <br>
} </p>
<p> 對(duì)于以上兩個(gè)文件file1.c和file2.c,
用Turbo C2.0的集成開發(fā)環(huán)境進(jìn)行編譯 <br>
連接時(shí), 首先應(yīng)建立一個(gè).prj的文件。例如file.prj,
該文件內(nèi)容如下: <br>
file1.c <br>
file2.c <br>
然后將file.prj的文件名寫入主菜單Project中的Project
Name項(xiàng)中。 再用F9 <br>
編譯連接, 就可產(chǎn)生一個(gè)文件名為fioe.exe的可執(zhí)行文件。
<br>
外部變量和FORTRAN語言中的COMMOM定義的公共變量一樣。
<br>
四、register <br>
register稱為寄存器變量。它只能用于整型和字符型變量。定義符register說
<br>
明的變量被Turbo C2.0存儲(chǔ)在CPU的寄存器中,
而不是象普通的變量那樣存儲(chǔ)在內(nèi) <br>
存中, 這樣可以提高運(yùn)算速度。但是Turbo C2.0只允許同時(shí)定義兩個(gè)寄存器變量,
<br>
一旦超過兩個(gè),
編譯程序會(huì)自動(dòng)地將超過限制數(shù)目的寄存器變量當(dāng)作非寄存器變量
<br>
來處理。因此,
寄存器變量常用在同一變量名頻繁出現(xiàn)的地方。
<br>
另外,
寄存器變量只適用于局部變量和函數(shù)的形式參數(shù),
它屬于auto型變量, <br>
因此,
不能用作全程變量。定義一個(gè)整型寄存器變量可寫成:
<br>
register int a; <br>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -