結(jié)構(gòu)體

結(jié)構(gòu)體是什么?

結(jié)構(gòu)體就是把多個變量包裝在一起勋篓,結(jié)構(gòu)體也可以作為類型使用婆跑,你可以定義結(jié)構(gòu)體變量此熬,結(jié)構(gòu)體指針。

為什么需要結(jié)構(gòu)體滑进?

想象現(xiàn)在有一個函數(shù) char* findStudentName(char* no)犀忱,它通過學(xué)號查找學(xué)生姓名。當(dāng)我們僅僅需要查找學(xué)生姓名時扶关,是沒問題的阴汇。假設(shè)現(xiàn)在我們還需要獲取到年齡,性別节槐,聯(lián)系電話搀庶,班級這些信息呢?你可能會想到我們是不是應(yīng)該再寫幾個諸如 findStudentAge, findStudentSex, findStudentPhone, findStudentClass 這樣的函數(shù)铜异。僅從功能上來說這樣確實可以解決問題哥倔,但是這個方案不好,因為往往需要多次調(diào)用才能獲取到需要的全部信息揍庄,等到你了解到數(shù)據(jù)庫之類的技術(shù)后咆蒿,你就會認(rèn)識到這個方案在運行速度上也是不能接受的。

上面提到的這些函數(shù)大部分都是返回 char* 類型币绩,現(xiàn)在想象一下蜡秽,假設(shè)有個類型就叫 Student,這個 Student 類型包含了你所需要的所有的學(xué)生信息缆镣。那么上面的問題是不是就可以用一個 Student findStudent(char* no) 函數(shù)解決了芽突?這里提到的 Student 類型在 C 語言中就是通過結(jié)構(gòu)體來實現(xiàn)。

怎么做董瞻?

首先要定義上面提到的結(jié)構(gòu)體 Student

struct Student {
   char* name;
   char* sex;
   int age;
   char* class;
   char* no;
   char* phone;
};

struct 是定義和使用結(jié)構(gòu)體的關(guān)鍵字寞蚌,后面的 Student 是結(jié)構(gòu)體的名字田巴,用花括號包起來的是結(jié)構(gòu)體的成員定義,多個成員之間用分號分割挟秤,每個成員需要指明類型和名字壹哺。

接下來看下結(jié)構(gòu)體的使用代碼

struct Student findStudent(char* no) {    //注意函數(shù)的返回值是 struct Student
    struct Student student;   //聲明結(jié)構(gòu)體變量
    student.age = 20;       //給結(jié)構(gòu)體成員賦值
    student.name = "小明";
    student.sex = "男";
    student.class = "一年級七班";
    student.no = no;
    student.phone = "18282828282";
    return student;
}

這個 findStudent 函數(shù)返回了一個 Student 結(jié)構(gòu)體,在代碼中你可以看到如何聲明一個結(jié)構(gòu)體變量艘刚,如何給每個成員賦值管宵。

最后添加一個 main 函數(shù),嘗試調(diào)用以上代碼

int main() {
    struct Student student = findStudent("1140707");
    printf("%s, %s, %d, %s, %s, %s", student.name, student.sex
            , student.age, student.class, student.no, student.phone);
    return 0;
}

現(xiàn)在把以上代碼復(fù)制到你的編輯器中編譯運行試試看攀甚。注意結(jié)構(gòu)體和函數(shù)的聲明要在使用前箩朴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市秋度,隨后出現(xiàn)的幾起案子炸庞,更是在濱河造成了極大的恐慌,老刑警劉巖荚斯,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠居,死亡現(xiàn)場離奇詭異,居然都是意外死亡事期,警方通過查閱死者的電腦和手機滥壕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刑赶,“玉大人捏浊,你說我怎么就攤上這事∽策叮” “怎么了金踪?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牵敷。 經(jīng)常有香客問我胡岔,道長,這世上最難降的妖魔是什么枷餐? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任靶瘸,我火速辦了婚禮,結(jié)果婚禮上毛肋,老公的妹妹穿的比我還像新娘怨咪。我一直安慰自己,他們只是感情好润匙,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布诗眨。 她就那樣靜靜地躺著,像睡著了一般孕讳。 火紅的嫁衣襯著肌膚如雪匠楚。 梳的紋絲不亂的頭發(fā)上巍膘,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音芋簿,去河邊找鬼峡懈。 笑死,一個胖子當(dāng)著我的面吹牛与斤,可吹牛的內(nèi)容都是我干的肪康。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幽告,長吁一口氣:“原來是場噩夢啊……” “哼梅鹦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冗锁,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗤栓,沒想到半個月后冻河,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡茉帅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年叨叙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堪澎。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡擂错,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出樱蛤,到底是詐尸還是另有隱情钮呀,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布昨凡,位于F島的核電站爽醋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏便脊。R本人自食惡果不足惜蚂四,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哪痰。 院中可真熱鬧遂赠,春花似錦、人聲如沸晌杰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乎莉。三九已至送讲,卻和暖如春奸笤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哼鬓。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工监右, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人异希。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓健盒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親称簿。 傳聞我的和親對象是個殘疾皇子扣癣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容