iOS 學習心得記錄之:C語言結(jié)構(gòu)體定義的六中模式

#include <stdio.h>
int main(int argc, const char * argv[]) {
    
    //第1種,匿名結(jié)構(gòu)體,不需要結(jié)構(gòu)體名,只需要結(jié)構(gòu)體變量,只使用一次。
    struct {
        char *title;
    } someStruct;
    
    someStruct.title = "我是匿名結(jié)構(gòu)體";
    printf("%s\n",someStruct.title);
    
    //標準的結(jié)構(gòu)體定義方式(確定結(jié)構(gòu)體的類型)
    //第2種 相當于聲明了一個 數(shù)據(jù)類型,類型名稱是 Book
    struct Book
    {
        char *title;
        float price;
    };
    
    //使用的時候比較怪異,必須在類型名前面還要加上一個 struct 關(guān)鍵字。
    //需要加上聲明關(guān)鍵字 和 類型名稱
    //就有點類似 java 里 我聲明了一個類,class Person 在使用的使用不能 person 而需要 class Person.. (這有一點反直覺)
    struct Book book1;
    book1.title = "C Primer Plus";
    book1.price = 75.50f;
    printf("title = %s price = %.2f\n",book1.title,book1.price);
    
    //第3種 ,聲明結(jié)構(gòu)體的同時聲明結(jié)構(gòu)體變量。
    
    struct Student {
        char *name;
        float weight;
        float height;
        
    } stu1;
    
    
    stu1.name = "張三";
    stu1.weight = 75.5;
    stu1.height = 175.50;
    
    printf("姓名 = %s 身高 = %.2f 體重 = %.2f\n",stu1.name,stu1.weight,stu1.height);
    
    //第4種,使用typedef 對已有的結(jié)構(gòu)體類型取別名。
    //我們給Student 結(jié)構(gòu)體去別名叫 GoodBoy (這里仍然要加上一個 struct)
    typedef struct Student GoodBoy;
    
    GoodBoy boy1 = { .name = "jack",.weight = 88.0,.height = 182.2};
    
    printf("boy1 %s %.2f %.2f\n",boy1.name,boy1.weight,boy1.height);
    
    //第5種,使用typedef 在定義 結(jié)構(gòu)體的時候,不省略結(jié)構(gòu)體原來的名字,取別名
    typedef struct Dog {
        char *name ;
        float weight;
        int age;
    } Samoyed;
    
    //我們可以使用原來的名字 Dog
    struct Dog d1 = {.name = "薩摩耶",.weight = 22.22f,.age = 1};
    printf("d1.name = %s d1.weight = %.2f d1.age = %d\n",d1.name,d1.weight,d1.age);
    //也可以使用下面定義的別名(使用別名的時候,就可以省略一個struct關(guān)鍵字了)..這也是我個人最常用的方法,好處是可以節(jié)省一個 struct 關(guān)鍵字的輸入
    Samoyed d2 = {.name = "哈士奇",.weight = 22.22f,.age = 1};
    printf("d2.name = %s d2.weight = %.2f d2.age = %d\n",d2.name,d2.weight,d2.age);
    
    //第6種,省略結(jié)構(gòu)體的原名,直接使用typedef定義一個新名字
    typedef struct {
        float price;
        char *brand;
    } Computer;
    
    Computer c = {.price = 12888.00f,.brand = "MacBookPro"};
    printf("price = %.2f brand = %s\n",c.price,c.brand);
    
    //最后總結(jié):
    //1.匿名結(jié)構(gòu)體,值需要用一次,可以使用 struct {} 變量名
    //2.標準的結(jié)構(gòu)體, struct 結(jié)構(gòu)體名 {}
    //3.聲明結(jié)構(gòu)體的同時,接著聲明一個結(jié)構(gòu)體變量 struct 結(jié)構(gòu)體名 {} 結(jié)構(gòu)體變量名
    // ---------  特別注意,使用typedef 定義結(jié)構(gòu)體的時候,原來的結(jié)構(gòu)體變量名此時就變成了結(jié)構(gòu)體本身替換的名字,且在使用的使用可以省略一個struct關(guān)鍵字。
    //4.使用typedef 給已經(jīng)存在的結(jié)構(gòu)體取別名 typedef existsStruct newStructName
    //5.使用typedef 定義標準結(jié)構(gòu)體 typedef struct 結(jié)構(gòu)體名 {} 結(jié)構(gòu)體別名
    //6.使用typedef 定義省略結(jié)構(gòu)體名只有別名的結(jié)構(gòu)體 typedef struct {} 結(jié)構(gòu)體別名
    
    
    
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容