亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Turbo-4.變量

2019-11-17 05:12:14
字體:
來源:轉載
供稿:網友

  4.1 變量說明
Turbo C2.0規定所有變量在使用前都必須中以說明。一條變量說明語句由數據
類型和其后的一個或多個變量名組成。變量說明的形式如下:
類型 <變量表 designtimesp=29038>;
這里類型是指Turbo C2.0的有效數據類型。變量表是一個或多個標識符名, 每
個標識符之間用","分隔。
例如:
int i, j, k; unsigned char c, str[5], *p;
 
4.2 變量種類
變量可以在程序中三個地方說明: 函數內部、函數的參數定義中或所有的函數
外部。根據所定義位置的不同, 變量可分為局部變量、形式參數和全程變量。
一、局部變量
局部變量是指在函數內部說明的變量(有時也稱為自動變量)。用要害字auto進
行說明, 當auto省略時, 所有的非全程變量都被認為是局部變量, 所以auto實際上
從來不用。
局部變量在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這
個變量也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自
動消失。
 

二、形式參數
形式參數是指在函數名后面的小括號里定義的變量, 用于接受來自調用函數的
參數。形式參數在函數內部可以象其它局部變量那樣來作用。
例如:
puthz(int x, int y, int color, char *p)
{
int i, j, k; /*定義局部變量*/
<程序體 designtimesp=29064>
}
其中x, y, color, *p為函數的形式參數, 不需要再進行說明就可在該函數內
直使用。
 

三、全程變量
全程變量是指在所有函數之外說明的變量, 它在整個程序內部者是"可見的",
可以被任何一個函數使用, 并且在整個程序的運行中都保留其值。全程變量只要滿
足在使用它以前和函數以外這兩個條件, 可在程序的任何位置進行說明, 習慣上通
常在程序的主函數前說明。
例如:
#include
int test; /*定義全程變量*/
void f1(int x, float y); /*子函數說明*/
void f2(void); /*子函數說明*/
main()
{
test=5; /*給全程變量賦值*/
f1(20, 5.5); /*調用有形式參數的子函數f1()*/
/*test的值變成115*/
f2(); /*調用f2(), test的值變為1150*/
}
void f1(int x, float y)
{
float z; /*z定義為局部變量*/
z=x*y; /*計算*/
test=test+z;
}
void f2(void)
{
int count=10; /*定義局部變量并初始化*/
test=test*count;
}
 

由于全程變量可被整個程序內的任何一個函數使用, 所以可作為函數之間傳遞
參數的手段, 但全程變量太多時, 內存開銷變大。
4.3 變量存儲類型
Turbo C2.0支持四種變量存儲類型。說明符如下:
auto static extern register
下面分別來介紹。
一、auto
auto稱為自動變量, 已在前面作了介紹, 這里不再重復。
二、static
static稱為靜態變量。根據變量的類型可以分為靜態局部變量和靜態全程變量。
1. 靜態局部變量
它與局部變量的區別在于: 在函數退出時, 這個變量始終存在, 但不能被其它
函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變量一樣。
2. 靜態全程變量
Turbo C2.0答應將大型程序分成若干獨立模塊文件分別編譯, 然后將所有模塊
的目標文件連接在一起, 從而提高編譯速度, 同時也便于軟件的治理和維護。靜態
全程變量就是指只在定義它的源文件中可見而在其它源文件中不可見的變量。它與
全程變量的區別是: 全程變量可以再說明為外部變量(extern), 被其它源文件使用,
而靜態全程變量卻不能再被說明為外部的, 即只能被所在的源文件使用。
三、extern
extern稱為外部變量。為了使變量除了在定義它的源文件中可以使用外, 還要
被其它文件使用。因此, 必須將全程變量通知每一個程序模塊文件, 此時可用
extern來說明。
例如:
文件1為file1.c 文件2為file2.c
int i, j;/*定義全程變量*/ extern int i, j;/*說明將i, j從
文件1中復制過來*/
char c; extern char c; /*將c復制過來*/
void func1(int k); func2() /*用戶定義函數*/
{
main() static float k;/*定義靜態變量*/
{ i=j*5/100;
func1(20);/*調用函數*/ k=i/1.5;
func2(); .
. .
. .
. }
}
func1(int k) /*用戶定義函數*/
{
j=k*100;
}
 

對于以上兩個文件file1.c和file2.c, 用Turbo C2.0的集成開發環境進行編譯
連接時, 首先應建立一個.PRj的文件。例如file.prj, 該文件內容如下:
file1.c
file2.c
然后將file.prj的文件名寫入主菜單Project中的Project Name項中。 再用F9
編譯連接, 就可產生一個文件名為fioe.exe的可執行文件。
外部變量和FORTRAN語言中的COMMOM定義的公共變量一樣。
四、register
register稱為寄存器變量。它只能用于整型和字符型變量。定義符register說
明的變量被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變量那樣存儲在內
存中, 這樣可以提高運算速度。但是Turbo C2.0只答應同時定義兩個寄存器變量,
一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變量當作非寄存器變量
來處理。因此, 寄存器變量常用在同一變量名頻繁出現的地方。
另外, 寄存器變量只適用于局部變量和函數的形式參數, 它屬于auto型變量,
因此, 不能用作全程變量。定義一個整型寄存器變量可寫成:
register int a;
對于以上所介紹的變量類型和變量存儲類型將會在以后的學習中, 通過例行程
序中的定義、使用來逐漸加深理解。
 

4.4 數組變量
所謂數組就是指具有相同數據類型的變量集, 并擁有共同的名字。數組中的每
個特定元素都使用下標來訪問。數組由一段連續的存貯地址構成, 最低的地址對應
于第一個數組元素, 最高的地址對應最后一個數組元素。數組可以是一維的、也可
以是多維的。Turbo C2.0象它高級語方一樣也使用數組變量。
 

一、一維數組
一維數組的說明格式是:
類型 變量名[長度];
類型是指數據類型, 即每一個數組元素的數據類型, 包括整數型、浮點型、字
符型、指針型以及結構和聯合。
例如:
int a[10];
unsigned long a[20];
char *s[5];
char *f[];
 

說明:
1. 數組都是以0作為第一個元素的下標, 因此, 當說明一個int a[16] 的整型
數組時, 表明該數組有16個元素, a[0]~a[15], 一個元素為一個整型變量。
2. 大多數字符串用一維數組表示。數組元素的多少表示字符串長度, 數組名
表示字符串中第一個字符的地址, 例如在語句char str[ 8] 說明的數組中存入
"hello"字符串后, str表示第一個字母"h"所在的內存單元地址。str[0] 存放的是
字母"h"的ASCII碼值, 以此類推, str[4]存入的是字母"o"的ASCII碼值, str[5]則
應存放字符串終止符'/0'。
3. Turbo C2.0對數組不作邊界檢查。例如用下面語句說明兩個數組
char str1[5], str2[6];
當賦給str1一個字符串"ABCDEFG"時, 只有"ABCDE"被賦給, "E" 將會自動的賦
給str2, 這點應非凡注重。
 

三、多維數組
多維數組的一般說明格式是:
類型 數組名[第n維長度][第n-1維長度]......[第1維長度];
這種說明方式與BASIC、FORTRAN等語言中多維數組的說明不一樣。
例如:
int m[3][2]; /*定義一個整數型的二維數組*/
char c[2][2][3]; /*定義一個字符型的三維數組*/
數組m[3][2]共有3*2=6個元素, 順序為:
m[0][0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1];
數組c[2][2][3]共有2*2*3=12個元素, 順序為:
c[0][0][0], c[0][0][1], c[0][0][2],
c[0][1][0], c[0][1][1], c[0][1][2],
c[1][0][0], c[1][0][1], c[1][0][2],
c[1][1][0], c[1][1][1], c[1][1][2],
數組占用的內存空間(即字節數)的計算式為:
字節數=第1維長度*第2維長度*...*第n維長度*該數組數據類型占用的字節數
4.5 變量的初始化和賦值
 

一、變量的初始化
變量的初始化是指變量在被說明的同時賦給一個初值。Turbo C2.0中外部變量
和靜態全程變量在程序開始處被初始化, 局部變量包括靜態局部變量是在進入定義

它們的函數或復合語句時才作初始化。所有全程變量在沒有明確的初始化時將被自
動清零, 而局部變量和寄存器變量在未賦值前其值是不確定的。
對于外部變量和靜態變量, 初值必須是常數表達式, 而自動變量和寄存器變量
可以是任意的表達式, 這個表達式可以包括常數和前面說明過的變量和函數。
1. 單個變量的初始化
例如:
float f0, f1=0.2;/*定義全程變量, 在初始化時f0被清零, f1被賦0.2*/
main()
{
static int i=10, j; /*定義靜態局部變量, 初始化時i被賦10, j不確
定*/
int k=i*5; /*定義局部變量, 初始化時k被賦10*5=50*/
char c='y'; /*定義字符型指什變量并初始化*/
.
.
.
}
 

2. 數組變量的初始化
例如:
main()
{
int p[2][3]={{2, -9, 0}, {8, 2, -5}}; /*定義數組p并初始化/*
int m[2][4]={{27, -5, 19, 3}, {1, 8, -14, -2}};/*定義數組m并初
始化*/
char *f[]={'A', 'B', 'C'}; /*定義數組f并初始化*/
.
.
.
}
從上例可以看出: Turbo C2.0中數組進行初始化有下述規則:
(1) 數組的每一行初始化賦值用"{}"并用","分開, 總的再加一對"{}"括起來,
最后以";"表示結束。
(2) 多維數組的存儲是按最右維數的變量變化最快的原則。
(3) 多維數組存儲是連續的, 因此可以用一維數組初始化的辦法來初始化多維
數組。
例如:
int x[2][3]={1, 2, 3, 4, 5, 6};/*用一維數組來初始化二維數組*/
(4) 對數組初始化時, 假如初值表中的數據個數比數組元素少, 則不足的數組
元素用0來填補。
(5) 對指針型變量數組可以不規定維數, 在初始化賦值時, 數組維數從0 開始
被連續賦值。
例如:
char *f[]={'a', 'b', 'c'};
初始化時將會給3個字符指針賦值, 即: *f[0]='a', *f[1]='b', *f[2]='c'。
 

3. 指針型變量的初始化
例如:
main()
{
int *i=7899; /*定義整型數指針變量并初始化*/
float *f=3.1415926; /*定義浮點數指針變量并初始化*/
char *s="Good"; /*定義字符型指針變量并初始化*/
.
.
.
}
 

二、變量的賦值
變量賦值是給已說明的變量賦給一個特定值。
1. 單個變量的賦值
(1) 整型變量和浮點變量
這兩種變量采用下列格式賦值
變量名=表達式;
例如:
main()
{
int a, m; /*定義局部整型變量a, m*/
float n; /*定義局部浮點變量f*/
a=100, m=20; /*給變量賦值*/
n=a*m*0.1;
.
.
.
}
 

說明:
Turbo C2.0中答應給多個變量賦同一值時可用連等的方式。
例如:
main()
{
int a, b, c;
a=b=c=0; /*同時給a,b,c賦值*/
.
.
.
}
 

(2) 字符型變量
字符型變量可以用三種方法賦值。
例如:
main()
{
char a0, a1, a2; /*定義局部字符型變量a0, a1, a2*/
a0='b'; /*將字母b賦給a0*/
a1=50; /*將數字2(十進制ASCII值為50賦給a1*/
a2='/x0d'; /*將回車符賦給a2*/
.
.
.
}
 

(3) 指針型變量
例如:
main()
{
int *i;
char *str;
*i=100;
str="Good";
.
.
.
}
*i表示i是一個指向整型數的指針, 即*i是一個整型變量, i是一個指向該整型
變量的地址。
*str表示str是一個字符型指針, 即保留某個字符地址。在初始化時, str沒有
什么非凡的值, 而在執行str="Good"時, 編譯器先在目標文件的某處保留一個空間
存放"Good/0"的字符串, 然后把這個字符串的第一個字母"G"的地址賦給str, 其中
字符串結尾符"/0"是編譯程序自動加上的。
對于指針變量的使用要非凡注重。上例中兩個指針在說明前沒有初始化, 因此
這兩指針為隨機地址, 在小存儲模式下使用將會有破壞機器的危險。正確的使用辦
法如下:
例如:
main()
{
int *i;
char *str;
i=(int*)malloc(sizeof(int));
i=420;
str=(char*)malloc(20);
str="Good, Answer!";
.
.
.
}
上例中, 函數(int*)malloc(sizeof(int))表示分配連續的sizeof(int)=2個字
節的整型數存儲空間并返回其首地址。
同樣(char*)malloc(20)表示分配連續20 個
字節的字符存儲空間并返回首地址(有關該函數以后再詳述)。由動態內存分配函數
malloc()分配了內存空間后, 這部分內存將專供指針變量使用。
假如要使i指向三個整型數, 則用下述方法。
例如:
#include
main()
{
int *a;
a=(int*)malloc(3*sizeof(int));
*a=1234;
*(a+1)=4567;
*(a+2)=234;
.
.
.
}
*i=1234表示把1234存放到i指向的地址中去, 但對于*(i+1)=4567, 假如認為
將4567存放到i指向的下一個字節中就錯了。Turbo C2.0中只要說明i為整型指針,
則 (i+1) 等價于 i+1*sizeof(int)
同樣 (i+2) 等價于 i+2*sizeof(int)
 

2. 數組變量的賦值
(1) 整型數組和浮點數組的賦值
例如:
main()
{
int m[2][2];
float n[3];
m[0][0]=0, m[0][1]=17, m[1][0]=21;/*數組元素賦值*/
n[0]=109.5, n[1]=-8.29, n[2]=0.7;
.
.
.
}
 

(2)字符串數組的賦值
例如:
main()
{
char s[30];
strcpy(s, "Good News!"); /*給數組賦字符串*/
.
.
.
}
上面程序在編譯時, 碰到char s[30]這條語句時, 編譯程序會在內存的某處留
出連續30個字節的區域, 并將第一個字節的地址賦給s。當碰到strcpy( strcpy 為
Turbo C2.0的函數)時, 首先在目標文件的某處建立一個"Good News!/0" 的字符串。
其中/0表示字符串終止, 終止符是編譯時自動加上的, 然后一個字符一個字符地復
制到s所指的內存區域。因此定義字符串數組時, 其元素個數至少應該比字符串的
長度多1。
注重:
1. 字符串數組不能用"="直接賦值, 即s="Good News!"是不合法的。所以應分
清字符串數組和字符串指針的不同賦值方法。
2. 對于長字符串, Turbo C2.0答應使用下述方法:
例如:
main()
{
char s[100];
strcpy(s, "The writer would like to thank you for"
"your interest in his book. He hopes you"
"can get some helps from the book.");
.
.
.
}
 

(3)指針數組賦值
例如:
main()
{
char *f[2];
int *a[2];
f[0]="thank you"; /*給字符型數組指針變量賦值*/
f[1]="Good Morning";
*a[0]=1, *a[1]=-11; /*給整型數數組指針變量賦值*/
.
.
.
}
 

三、數組與指針
數組與指針有密切的聯系。數組名本身就是該數組的指針, 反過來, 也可以把
指針看成一個數組, 數組名和指針實質上都是地址, 但是指針是變量, 可以作運算。
而數組名是常量, 不能進行運算。
例如:
main()
{
char s[30], *p; /*定義字符型數組和指針變量*/
p=s; /*指針p指向數組s的第一個元素s[0]的地址*/
.
.
.
*(p+8); /*指針p指向數組s的第9個元素s[8]的地址*/
.
.
.
}
由上例可以看出數組和指針有如下關系:
(p+i)=&(s[i])
*(p+i)=s[i]
因此, 利用上述表達式可以對數組和指針進行互換。兩者的區別僅在于: 數組
s是程序自動為它分配了所需的存儲空間; 而指針p則是利用動態分想函數為它分配
存儲空間或賦給它一個已分配的空間地址。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色yeye香蕉凹凸一区二区av| 国产精品视频在线播放| 国产精品福利无圣光在线一区| 国产中文欧美精品| 国产日韩欧美一二三区| 中文字幕日韩欧美在线视频| 日本精品一区二区三区在线播放视频| xxav国产精品美女主播| 久久影院资源站| 欧美激情欧美狂野欧美精品| 成人网在线免费看| 中文字幕在线视频日韩| 欧美乱大交xxxxx另类电影| 日韩欧美一区二区三区久久| 一区二区三区无码高清视频| 性亚洲最疯狂xxxx高清| 国产成人精品久久亚洲高清不卡| 久久久久久久电影一区| 91av在线视频观看| 超在线视频97| 成人黄色短视频在线观看| 日韩高清免费在线| 97久久精品在线| 国产精品揄拍一区二区| 国产精品欧美久久久| 亚洲精品国偷自产在线99热| 国内精品视频在线| 日韩一区二区三区xxxx| 国产精品高潮视频| 国产亚洲精品久久久久久牛牛| 久久的精品视频| 亚洲精品一二区| 亚洲精品福利资源站| 丝袜美腿精品国产二区| 国产中文字幕日韩| 精品久久中文字幕久久av| 亚洲第一区第二区| 日韩有码视频在线| 亚洲男人av电影| 精品国产电影一区| 神马国产精品影院av| 欧美大片免费观看| 另类专区欧美制服同性| 日韩专区在线播放| 性色av一区二区三区红粉影视| 亚洲福利小视频| 欧美日韩中国免费专区在线看| 亚洲天堂成人在线| 亚洲人成网7777777国产| 欧美成人免费va影院高清| 亚洲黄页网在线观看| 日韩有码在线视频| 秋霞av国产精品一区| 亚洲一区中文字幕在线观看| 国产精品色视频| 91久久久久久久久| 国产精品欧美亚洲777777| 久久精品99久久久香蕉| 亚洲第一av在线| 欧美性20hd另类| 亚洲第一色中文字幕| 亚洲精品久久久久久久久| 2019中文字幕在线免费观看| 欧美日韩国产成人在线| 97国产真实伦对白精彩视频8| 92版电视剧仙鹤神针在线观看| 国产精品www网站| 国产精品一区二区av影院萌芽| 日韩电影中文字幕av| 国产精品久久久久久av| 精品日韩视频在线观看| 中文字幕在线看视频国产欧美| 日韩高清人体午夜| 亚洲福利在线观看| 亚洲视频一区二区| 夜夜嗨av一区二区三区免费区| 国产男女猛烈无遮挡91| 影音先锋欧美在线资源| 国产成人精品av| 久久人人爽人人爽人人片av高清| 欧洲午夜精品久久久| 国内精品在线一区| 色爱av美腿丝袜综合粉嫩av| 亚洲第一福利网| 亚洲精品国产精品乱码不99按摩| 精品少妇v888av| 国产盗摄xxxx视频xxx69| 国产精品视频自拍| 国产精品美女主播| 日韩av日韩在线观看| 国产精品在线看| 国产精品亚洲美女av网站| 欧美在线亚洲一区| 91亚洲国产成人精品性色| 亚洲色图日韩av| 久久久久久97| 欧美精品中文字幕一区| 日韩中文字幕在线观看| 欧美成人合集magnet| 亚洲高清在线观看| 国产日韩中文字幕在线| 成人在线中文字幕| 欧美大尺度电影在线观看| 国产精品电影网站| 亚洲国产毛片完整版| 成人午夜高潮视频| 51午夜精品视频| 欧美在线视频免费观看| 红桃视频成人在线观看| 亚洲精品久久久久久久久久久久| 亚洲bt欧美bt日本bt| 成人www视频在线观看| 欧美精品在线视频观看| 色综合久综合久久综合久鬼88| 国产精品久久久久久中文字| 欧美肥婆姓交大片| 亚洲影院色在线观看免费| 国产精品成久久久久三级| 亚洲欧美国产一本综合首页| 欧美在线一区二区三区四| 久久精品视频在线播放| 亚洲国产欧美一区二区三区同亚洲| 久久九九热免费视频| 色老头一区二区三区在线观看| 亚洲色图25p| 亚洲热线99精品视频| 中文一区二区视频| 成人国内精品久久久久一区| 日韩中文字幕不卡视频| 国产精品白嫩美女在线观看| 色综合久久88色综合天天看泰| 日韩免费看的电影电视剧大全| 日韩在线观看免费高清| 国产97免费视| 日韩高清欧美高清| 中文字幕日韩精品在线观看| 欧美自拍视频在线观看| 国产精欧美一区二区三区| 欧美精品中文字幕一区| 日韩av免费看网站| 91成人在线播放| 亚洲免费影视第一页| 国产日产亚洲精品| 国产成人精品在线视频| 欧美一区三区三区高中清蜜桃| 情事1991在线| 成人黄色av播放免费| 亚洲男人的天堂在线播放| 欧美日韩国产一区在线| 日日骚久久av| 日韩av电影在线网| 国产亚洲视频中文字幕视频| 亚洲美女性生活视频| 91久久久久久久一区二区| 欧美激情videos| 国产精品久久久久av| 81精品国产乱码久久久久久| 亚洲网站在线看| 91高潮精品免费porn| 日韩av第一页| 国产成人a亚洲精品| 456亚洲影院| 国产视频观看一区| 亚洲欧美综合精品久久成人|