国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C語言--結(jié)構(gòu)體

2019-11-06 06:48:07
字體:
供稿:網(wǎng)友
結(jié)構(gòu)體,是一個在C語言中允許存儲不同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),和前面我們說到的數(shù)組不同,數(shù)組是存儲相同類型的數(shù)據(jù),而結(jié)構(gòu)體是可以存儲不同類型的數(shù)據(jù)。例如:在數(shù)組中,如果是一個int類型的數(shù)組,那么數(shù)組中的元素只能是int類型的數(shù)據(jù)。而結(jié)構(gòu)體不同,在定義結(jié)構(gòu)體的時候,結(jié)構(gòu)體的屬性可以是不同數(shù)據(jù)類型。下面我們就來定義一個結(jié)構(gòu)體。struct BOOKS{    char title[50];    char subject[50];    int book_id;};struct是定義結(jié)構(gòu)體的關(guān)鍵字,Books是結(jié)構(gòu)體的名稱,{}內(nèi)的是結(jié)構(gòu)體的成員屬性。我們可以看到,在結(jié)構(gòu)體中,成員屬性的類型是不一樣的有char,有int。這樣的一種數(shù)據(jù)結(jié)構(gòu)就方便了我們對于現(xiàn)實中數(shù)據(jù)的存儲,就如上面的例子,要存儲一本書,如果我們按照以前的方式,創(chuàng)建一個title變量,一個subject變量,創(chuàng)建一個book_id變量。這樣也是可以的,但是如果我們的book有更多的成員屬性,那么這個代碼就寫的很麻煩了。而且對于有很多的book的數(shù)據(jù)需要處理的時候,這樣的邏輯就不是正常的開發(fā)人員的邏輯了。我們的工作就是要讓復(fù)雜的管理變得簡單。這個時候,結(jié)構(gòu)體就凸顯出了它特有的有點。而且,結(jié)構(gòu)體很像我們在面向?qū)ο笳Z言中的類,每一個結(jié)構(gòu)成員都是一個對象。這樣的設(shè)計就很合現(xiàn)實情理。結(jié)構(gòu)體的定義很簡單,只是定義名稱,然后寫入需要的成員屬性即可。當我們要使用一個已經(jīng)定義的結(jié)構(gòu)體對我們現(xiàn)有數(shù)據(jù)進行操作管理的時候,那么,結(jié)構(gòu)體的訪問也是我們必須要學(xué)會的內(nèi)容。    //聲明成員對象    struct BOOKS book;        //給成員對象賦值    strcpy( book.title, "C PRogramming");    strcpy( book.subject, "C Programming Tutorial");    book.book_id = 6495407;        //使用成員對象的屬性    printf("%s/n", book.title);上面的代碼就是對結(jié)構(gòu)體的訪問,使用我們上面定義的結(jié)構(gòu)體,第一步,聲明book,其類型是結(jié)構(gòu)體BOOKS類型。第二步,給book的屬性賦值,也可稱為是book詳述。最后就是使用我們賦值后的結(jié)構(gòu)體對象的。從定義,到賦值,再到使用。活脫脫的面向?qū)ο笥袥]有。結(jié)構(gòu)體BOOKS就是一個類,而聲明的book就是BOOKS的一個對象,title,subject,book_id都是類的成員屬性。這樣的理解更加有助于我們對于結(jié)構(gòu)體的認識。在函數(shù)的參數(shù)介紹時,已經(jīng)說了函數(shù)的參數(shù)可以是任何的C語言數(shù)據(jù)類型。在以前的文章中,也介紹了數(shù)組,指針,指針數(shù)組作為函數(shù)參數(shù)的例子。那么,結(jié)構(gòu)體是不是也是可以作為函數(shù)的參數(shù)呢?答案當然是可以。要想讓結(jié)構(gòu)體作為參數(shù)傳遞給函數(shù),那么,必須要讓函數(shù)可以接收一個結(jié)構(gòu)體。也就是說,函數(shù)的形式參數(shù)的類型就要是結(jié)構(gòu)體類型。下面是一個示例:函數(shù):void printBook( struct Books book ){   printf( "Book title : %s/n", book.title);   printf( "Book author : %s/n", book.author);   printf( "Book subject : %s/n", book.subject);   printf( "Book book_id : %d/n", book.book_id);}調(diào)用:   printBook( Book1 );在上面的示例中可以看到,函數(shù)的形參是一個結(jié)構(gòu)體的成員,所以,在調(diào)用的時候就只需要將一個結(jié)構(gòu)體成員作為實參使用即可。也可以使用一個指針指向結(jié)構(gòu)體。這個就是定義一個指向結(jié)構(gòu)的指針,示例如下:struct Books *pointer;pointer = &Book1;在上面的代碼實例中,我們不難發(fā)現(xiàn),在一個指向結(jié)構(gòu)的指針中存儲的是一個完整的結(jié)構(gòu)成員。將一個結(jié)構(gòu)成員的所以屬性都存儲在一個指針中。//定義結(jié)構(gòu)體struct BOOKS{    char title[50];    char subject[50];    int book_id;} ;//函數(shù)聲明void printBook(struct BOOKS *p);int main(int argc, const char * argv[]) {    //聲明成員對象    struct BOOKS book;        //給成員對象賦值    strcpy( book.title, "C Programming");    strcpy( book.subject, "C Programming Tutorial");    book.book_id = 6495407;        printBook(&book);        return 0;}//函數(shù)實現(xiàn)void printBook(struct BOOKS *p){    printf("%s/n", p->title);    printf("%s/n", p->subject);    printf("%d/n", p->book_id);}在上面的代碼中,我們看到了一個特別的符號 -> ,這個符號是專門用來使用指向結(jié)構(gòu)的指針訪問結(jié)構(gòu)的成員屬性的時候使用的。而且,在函數(shù)的調(diào)用時,要將結(jié)構(gòu)成員的地址作為實參傳遞給函數(shù)。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南川市| 环江| 垫江县| 崇信县| 宣恩县| 玉山县| 双鸭山市| 灵丘县| 红桥区| 宿松县| 横峰县| 白沙| 台湾省| 游戏| 孙吴县| 蒙城县| 泰兴市| 墨江| 府谷县| 治县。| 阿图什市| 榆林市| 嘉兴市| 梓潼县| 板桥市| 句容市| 新蔡县| 喀喇| 白城市| 达日县| 新宾| 即墨市| 瑞昌市| 麻江县| 德阳市| 绥宁县| 抚宁县| 桐乡市| 泗水县| 班戈县| 临漳县|