(2) 字符型變量
字符型變量可以用三種方法賦值。
例如:
main()
{
char a0, a1, a2; /*定義局部字符型變量a0, a1, a2*/
a0='b'; /*將字母b賦給a0*/
a1=50; /*將數(shù)字2(十進(jìn)制ASCII值為50賦給a1*/
a2='\x0d'; /*將回車符賦給a2*/
.
.
.
}
(3) 指針型變量
例如:
main()
{
int *i;
char *str;
*i=100;
str="Good";
.
.
.
}
*i表示i是一個指向整型數(shù)的指針, 即*i是一個整型變量, i是一個指向該整型變量的地址。
*str表示str是一個字符型指針, 即保留某個字符地址。在初始化時, str沒有什么特殊的值, 而在執(zhí)行str="Good"時, 編譯器先在目標(biāo)文件的某處保留一個空間存放"Good\0"的字符串, 然后把這個字符串的第一個字母"G"的地址賦給str, 其中字符串結(jié)尾符"\0"是編譯程序自動加上的。
對于指針變量的使用要特別注意。上例中兩個指針在說明前沒有初始化, 因此這兩指針為隨機(jī)地址, 在小存儲模式下使用將會有破壞機(jī)器的危險。正確的使用辦法如下:
例如:
main()
{
int *i;
char *str;
i=(int*)malloc(sizeof(int));
i=420;
str=(char*)malloc(20);
str="Good, Answer!";
.
.
.
}
上例中, 函數(shù)(int*)malloc(sizeof(int))表示分配連續(xù)的sizeof(int)=2個字節(jié)的整型數(shù)存儲空間并返回其首地址。同樣(char*)malloc(20)表示分配連續(xù)20 個字節(jié)的字符存儲空間并返回首地址(有關(guān)該函數(shù)以后再詳述)。由動態(tài)內(nèi)存分配函數(shù)malloc()分配了內(nèi)存空間后, 這部分內(nèi)存將專供指針變量使用。
如果要使i指向三個整型數(shù), 則用下述方法。
例如:
#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, 如果認(rèn)為將4567存放到i指向的下一個字節(jié)中就錯了。Turbo C2.0中只要說明i為整型指針,
則 (i+1) 等價于 i+1*sizeof(int)
同樣 (i+2) 等價于 i+2*sizeof(int)
2. 數(shù)組變量的賦值
(1) 整型數(shù)組和浮點(diǎn)數(shù)組的賦值
例如:
main()
{
int m[2][2];
float n[3];
m[0][0]=0, m[0][1]=17, m[1][0]=21;/*數(shù)組元素賦值*/
n[0]=109.5, n[1]=-8.29, n[2]=0.7;
.
.
.
}
(2)字符串?dāng)?shù)組的賦值
例如:
main()
{
char s[30];
strcpy(s, "Good News!"); /*給數(shù)組賦字符串*/
.
.
.
}
上面程序在編譯時, 遇到char s[30]這條語句時, 編譯程序會在內(nèi)存的某處留出連續(xù)30個字節(jié)的區(qū)域, 并將第一個字節(jié)的地址賦給s。當(dāng)遇到strcpy( strcpy 為Turbo C2.0的函數(shù))時, 首先在目標(biāo)文件的某處建立一個"Good News!\0" 的字符串。其中\(zhòng)0表示字符串終止, 終止符是編譯時自動加上的, 然后一個字符一個字符地復(fù)制到s所指的內(nèi)存區(qū)域。因此定義字符串?dāng)?shù)組時, 其元素個數(shù)至少應(yīng)該比字符串的長度多1。
相關(guān)推薦:計(jì)算機(jī)等考二級C語言備考:C語言/C++編譯過程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |