前面我們已經(jīng)討論過字符數(shù)組與字符串,字符指針也可以指向一個字符串,可以用字符串常量對字符指針進行初始化。例如:
char *str = "www.sztianhecheng.cn" ;
這是對字符指針進行初始化。此時,字符指針指向一個字符串常量的首地址。
結(jié)構(gòu)體與數(shù)組類似,都是由若干分量組成的,與數(shù)組不同的是,結(jié)構(gòu)體的成員可以是不同類型,可以通過成員名來訪問結(jié)構(gòu)體的元素。
結(jié)構(gòu)體的定義說明了它的組成成員,以及每個成員的數(shù)據(jù)類型。定義一般形式如下:
struct 結(jié)構(gòu)類型名 { 數(shù)據(jù)類型 成員名 1; 數(shù)據(jù)類型 成員名 2; ...... 數(shù)據(jù)類型 成員名 n; };
結(jié)構(gòu)的定義說明了變量在結(jié)構(gòu)中的存在格式,要使用該結(jié)構(gòu)就必須說明結(jié)構(gòu)類型的變量。結(jié)構(gòu)變量說明的一般形式如下:
struct 結(jié)構(gòu)類型名稱 結(jié)構(gòu)變量名;
定義結(jié)構(gòu)體便是定義了一種由成員組成的復(fù)合類型,而用這種類型說明了一個變量才會產(chǎn)生具體的實體。與說明基本數(shù)據(jù)類型的變量一樣,系統(tǒng)會按照結(jié)構(gòu)定義時的內(nèi)部組成,為說明的結(jié)構(gòu)變量分配內(nèi)存空間。結(jié)構(gòu)變量的成員在內(nèi)存中占用連續(xù)的存儲區(qū)域,所占內(nèi)存大小為結(jié)構(gòu)中每個成員的長度之和。
我們可以將變量student1說明為address類型的結(jié)構(gòu)變量:
struct address student1;
雖然,結(jié)構(gòu)體作為若干成員的集合是一個整體,但在使用結(jié)構(gòu)時,不僅要對結(jié)構(gòu)的整體進行操作,還經(jīng)常要訪問結(jié)構(gòu)中的每一個成員。在程序中使用結(jié)構(gòu)中成員的方法為:
結(jié)構(gòu)變量名.成員名稱
如student1.tel表示結(jié)構(gòu)變量student1的電話信息。
和其他類型的變量一樣,結(jié)構(gòu)變量也可以進行初始化。結(jié)構(gòu)初始化的一般形式如下:
struct 結(jié)構(gòu)類型名 結(jié)構(gòu)變量 = { 初始化數(shù)據(jù) 1, ...... 初始化數(shù)據(jù) n };
#include<stdio.h> #include<string.h> struct _INFO { int num; char str[256]; }; int main() { struct _INFO A; A.num = 2014; strcpy(A.str,"Welcome to dotcpp.com"); printf("This year is %d %s\n",A.num,A.str); return 0; }
請親自上機實驗。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程