c語言的結(jié)構(gòu)體是一組數(shù)據(jù)的組合,并不是簡單的單一類型。所以在查找和輸出的時(shí)候,均不能直接操作,而是要進(jìn)行變通。
創(chuàng)新互聯(lián)是一家專業(yè)提供琿春企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站設(shè)計(jì)、HTML5、小程序制作等業(yè)務(wù)。10年已為琿春眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
1
查找。
對(duì)于以某一項(xiàng)為關(guān)鍵字進(jìn)行查找時(shí),比如在結(jié)構(gòu)體中有int型的成員a,要查找a為100的結(jié)構(gòu)體變量,這時(shí)需要遍歷每個(gè)結(jié)構(gòu)體(數(shù)組、鏈表、或者其它任意形式),對(duì)每個(gè)元素的成員a值進(jìn)行比較,符合的則表示查找成功。
對(duì)于結(jié)構(gòu)體中元素較多,同時(shí)要對(duì)整個(gè)結(jié)構(gòu)體每個(gè)元素都匹配才算查找到的特殊情況,可以使用memcmp的方式,整體進(jìn)行比較,以減少代碼量。不過這種情況較為少見,不過多描述。
2
輸出。
對(duì)于結(jié)構(gòu)體的輸出,其實(shí)就是對(duì)其每一項(xiàng),或者若干項(xiàng)成員變量的輸出。
所以可以使用基本的輸出函數(shù),對(duì)每一項(xiàng)單獨(dú)輸出,輸出中為了方便閱讀,可以加一些說明文字。
如果對(duì)結(jié)構(gòu)體輸出有多處調(diào)用的需求,可以在將該功能封裝為函數(shù),供各個(gè)需要的函數(shù)調(diào)用。這樣的好處是,當(dāng)結(jié)構(gòu)體的成員出現(xiàn)變化,或者結(jié)構(gòu)體輸出要求更改時(shí),修改一處代碼即可完成所有的輸出修改,實(shí)現(xiàn)易于維護(hù)的效果。
struct student{
char name;
int number;
struct student *next;
}
這樣你定義了三個(gè)字段,姓名,number
我不知道你為什么這么定義,如果是我可能這么定義
struct student {
char name;/*學(xué)生姓名*/
int 性別; /*1代表femail (女性), 0 代表mail(男性)*/
int age;
struct student *next; /*為了用鏈表實(shí)現(xiàn)而采用*/
};
這樣完全可以實(shí)現(xiàn)你需要的數(shù)據(jù)類型.只需要再加上一些算法就可以了.
如果還有什么問題可以與我聯(lián)系.
一般工業(yè)上都會(huì)使用 typedef 來定義公司內(nèi)部的統(tǒng)一定義如
typedef struct student {
};
如果在結(jié)構(gòu)體定義時(shí),或定義后取了別名,可以用別名,否則不能省“struct”
如:typedef struct Teacher TEACHER;
則可以用TEACHER 代替struct Teacher
C語言的結(jié)構(gòu)體沒有存取控制權(quán)限,相當(dāng)于C++存取控制權(quán)限中的public: