亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • union的作用是讓不同的類型的變量共享同一個內存地址

    查看全部
    0 采集 收起 來源:Linux C公用體

    2020-01-26

  • 宏的好處在于可以不指定數據類型,因為宏是不管語法的

    查看全部
  • 宏函數

    #define ADD(a,b)? (a+b) ? (要盡量加上括號,防止語法錯誤,先后循序不一致。)

    查看全部
  • 預處理第二件事:宏替換

    #define 生成宏????R 宏的名字?????10 宏的內容(作用效果,從本行開始)

    此時視10為字符(單純的字符串替換,不考慮語法的問題)

    查看全部
  • 預處理第一件事,展開頭文件

    然后是宏替換

    查看全部
  • .i文件內函數在底端可以看見

    $????跳到文件底部 或 G 或 shift+g


    查看全部
  • .i????生成一個i后綴的文件

    -E????只進行預處理


    查看全部
  • 編譯文件的四個步驟

    查看全部
  • 結構體內存占用大小計算方法
    查看全部
    0 采集 收起 來源:Linux C公用體

    2019-12-30

  • 如何訪問結構體成員:

    //數組,攻擊力,價值

    struct mk14 mk15 = {"mk14_name",100,200};

    //訪問結構體第一個變量

    printf("%s\n",mk15.name);

    //如果要對結構體進行運算,需要寫完整 --》 mk15.atk++

    如何定義一個結構體數組

    結構體可以重復使用

    //同一個結構體定義兩種不同的變量,如同都是武器,都是武器不同,其他參數就不同

    struct mk14 mk16[2] = { {"mk15_name",500,1000}, {"mk16_name",555,1111} };

    //第一個武器 第二個武器

    printf("%s\n,%d\n",? mk16[0].name,? mk16[1].atk);


    查看全部
  • ? ?3-1

    ? ?結構體 stcuct 不同變量的集合

    ? ?//定義一種變量:里面可有多種變量的定義

    ? ?結構體名字的三種定義:

    ? ?

    1:在函數里面定義

    struct mk14{ //定義一個武器變量

    char name[20]; //武器名字

    int atk; //攻擊力

    int price; //武器價值

    }

    int main(){

    int a;

    float b;

    struct mk14 awm;

    return 0;

    }

    2:在結構體后面定義名字,類似如 typedef

    struct mk14{ //定義一個武器變量

    char name[20]; //武器名字

    int atk; //攻擊力

    int price; //武器價值

    }awm;

    int main(){

    int a;

    float b;

    return 0;

    }

    3:去掉結構體名字,但是這樣就不能在次定義名字了。

    struct { //定義一個武器變量

    char name[20]; //武器名字

    int atk; //攻擊力

    int price; //武器價值

    }awm;

    int main(){

    int a;

    float b;


    return 0;

    }


    查看全部
  • typedef 起別名 u8,u16之類的,也可以對函數進行起別名

    如 typedef int main(){} naim? ?--> 將int main() 一整個函數定義為naim

    typedef有作用域的問題

    define沒有作用域的問題

    而且,typedef 是在 .i文件之后執行的,會被C語言的語法所限制,而define 不會


    查看全部
  • 預處理階段工作:①將頭文件展開直接放置到源文件中


    ? ? ? ? ? ? ? ? ? ? ②宏替換


    ? ? ? ? ? ? ? ? ? ? ③條件編譯


    注意:宏替換只是簡單得字符串替換,且可以傳遞參數。


    例如,#define N(n) n*10


    ? ?int b = N(a);? // 首先n替換成a,然后a*10。




    易錯:#define ADD(a,b) a+b


    ? int c = ADD(a,b) * ADD(a,b);??


    /* 經過簡單的替換會得到 a+b*a+b,這顯示不是我們想要的結果,因此加上括號保證優先級不會出錯。*/


    正確寫法:#define ADD(a,b) (a+b) 這樣變換后會成 (a+b)*(a+b)

    一般寫法:

    int add(int a,int b)

    { return a+b; ? }

    int c = a+b;

    那么宏定義寫法的優勢在哪:

    一般寫法:參數ab 必須是一種類型的變量,要么整形 int,要么浮點型 float,

    字符串不這么寫(詳見C語言入門第六章6-8 )

    宏定義:參數ab 可以是任意,因為在宏里面所有參數都會被單成字符串來處理,

    ? ? 只要修改 int c 前面的 int 就行


    查看全部
  • 2-1:


    linux c 預處理:

    編譯的四個步驟:.c文件—>.i文件(預處理)->.s文件(編譯)->.o文件(匯編)->可執行文件(鏈接)

    gcc -o helloworld.i helloworld.c -E生成一個.i文件,只進行預處理

    .c和.i文件都是C的語法。.i展開了頭文件和進行宏替換(宏定義)

    2-2:

    宏定義符:#define??

    c語言常量分為直接常量和符號常量:

    #define 標識符 常量值(沒有分號)

    宏的本質是在預處理階段發生的單純的字符串替換(宏替換);

    在預處理階段,宏不考慮 C的語法。例如:

    #define n int main(

    n){} == int main(){}? //這樣寫是可以的

    而宏的作用通常是用于替換一些比常用的變量或名字:u8、u16之類的


    查看全部
  • 4-1 Linux C 公用體

    abc 存放到一個公用體中,節省開銷 ,同一時刻只能存儲一個成員

    union data{? int a;int b;int c;};

    結構體空間大小涉及到字節對齊,對齊的目的是讓計算機快速讀寫

    結構體對象大小=最后一個成員的大小+最后一個成員的偏移量+填充字節數

    每個成員所占內存大小的偏移量=成員字節大小的整數倍。

    a的偏移量是0,b的偏移量是4,c的偏移量是8

    結構體總大小是12,是最寬的基本類型成員大小(int ,4)的整數倍

    公用體變量和各個成員的變量是一個地址



    查看全部
    1 采集 收起 來源:Linux C公用體

    2019-12-05

舉報

0/150
提交
取消
課程須知
本課程為C語言的中級課程 1、需要有一定的C語言基礎,如有基礎薄弱的童鞋可以看一下網站上其他3門C語言的課程 2、因在Linux環境下,需會一些Linux下的命令,可以看一下《Linux C語言編程原理與實踐》此課。
老師告訴你能學到什么?
1、預處理是干什么的 2、結構體是什么 3、公用體是什么 4、位運算是怎么回事 5、如何實現動態數據結構體 6、遞歸的原理

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!