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

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 武器信息的單向動態鏈表,在程序執行的過程中逐漸創建節點

    struct weapon * create()//返回值是鏈表的頭指針

    {struct weapon * head;//頭指針

    struct weapon * p1,*p2;//鏈表當前新創建的節點,上一個節點

    int n=0;//記錄當前鏈表個數

    p1=p2=(struct weapon *)malloc(sizeof(struct weapon));//#include<malloc.h>,malloc分配內存塊,sizeof判斷數據類型的長度符

    head=null;//賦初值

    scanf("%d,%d",&p1->price,&p1->atk);

    while(p1->price!=0)

    {

    n++;

    if(n==1)head=p1;

    else p2->next = p1;//上一個節點的next指向創建的新節點

    p2=p1;//創建完成之后更新舊節點


    p1=(struct weapon *)malloc(sizeof(struct weapon));//更新p1

    scanf("%d,%d",&p1->price,&p1->atk);

    }

    p2->next=null;

    return (head);

    }


    struct weapon * p;

    p=creat();//p是頭指針,指向第一個節點

    查看全部
  • 靜態數據結構(固定大?。赫?,浮點型,數組,

    動態數據結構:鏈表

    每一個節點包含兩個部分,一部分是用戶需要的數據,一部分是下一個節點的地址

    https://img1.sycdn.imooc.com//5cec9f880001b13205350183.jpg

    鏈表里各個元素的地址不連續

    struct weapon{

    int price;

    int atk;

    struct weapon *next;//下一個節點的信息

    };

    struct weapon a,b,c,*head;

    a.price=100;

    a.atk=100;

    b.price=200;

    b.atk=200;

    c.price=300;

    c.atk=300;

    head=&a;

    a.next=&b;

    b.next=&c;

    c.next=null;


    struct weapon *p;

    p=head;

    while(p!=null){

    p->atk,p->price;

    p=p->next;

    }


    a.price=100;

    a.atk=100;


    查看全部
  • 共用體 聯合體 幾個不同的類型變量使用同一個內存地址,節省一定的開銷,同一時刻只能存儲一個成員

    union data{

    int a;

    char b;

    int c;

    }

    union data data_1;

    data_1.b='c';

    data_1.a=10;//起作用

    union data data_2={10};

    共用體所占的內存長度是它所有成員里所占內存最長的成員長度

    int為4,char為1,union長度為4

    結構體(字節對齊,快速讀寫,空間換取時間)所占內存長度是最后一個成員的偏移量加上最后一個成員的大小加上末尾的填充字節數

    偏移量是某一個成員的實際地址和結構體首地址之間的距離

    a偏移量為0,b偏移量為a的大小4

    每個成員相對于結構體首地址的偏移量是當前成員所占內存大小的整數倍,如果不是則填充字節

    c偏移量為a的大小4+b的大小1等于5不能整除c的大小4,所以在b后填充字節使c的偏移量為8

    結構體大小為8+4=12

    結構體總大小是不是結構體中內存長度最長的成員長度的整數倍,如果不是填充字節

    12可以整除4,如果不能整除則在c后填充字節

    %lu? ?sizeof(struct data)

    共用體變量的地址和成員的地址是同一個

    %p? &data_1.a


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

    2019-05-28

  • 結構體指針

    struct weapon *w;

    w=&weapon_1;

    (*w).name表示指向結構體中的成員()不能省略,.的優先級大于*的優先級,w->name

    *w表示指向結構體變量


    結構體數組指針

    struct weapon *p;

    p=weapon_2;

    p->name既是weapon_2[0].name

    p++既是weapon_2+1,指向了weapon_2[1]

    查看全部
    0 采集 收起 來源:結構體指針

    2019-05-27

  • 初始化結構體

    struct weapon weapon_1={"weapon_name",100,200};

    訪問結構體成員,具有所有變量的操作

    weapon_1.name

    ++weapon_1.price

    結構體數組

    int a[2]={1,2}

    struct weapon weapon_2[2]={"weapon_name1",50,100,"weapon_name2",100,200}

    struct weapon weapon_2[2]={{"weapon_name1",50,100},{"weapon_name2",100,200}}

    weapon_2[0].name

    weapon_2[1].price

    查看全部
  • struct 是不同變量類型的集合

    數組是相同變量類型的集合

    struct weapon{

    char name[20];

    int atk;

    int price;

    };
    struct weapon weapon_1;




    struct weapon{

    char name[20];

    int atk;

    int price;

    }weapon_1;//全局變量




    struct {

    char name[20];

    int atk;

    int price;

    }weapon_1;//全局變量


    查看全部
  • 預處理命令

    查看全部
  • 動態鏈接
    查看全部
  • define的作用域是宏定義下面的所有代碼

    typedef:關鍵字,給變量類型起別名,預處理之后不會被替換,有作用域

    typedef int a;(以分號為結尾)

    typedef int *p;(給int* 起別名叫p)

    p q=NULL;//int *q=NULL;


    結構體:

    typedef unsigned long size_t

    struct stu{};

    stuct stu XXX;

    typedef struct stu{}stu_t;

    stu_t XXX;

    查看全部
  • #define N(n) n*10

    int b=N(a);? ?//int b=a*10;

    #define ADD(a,b) a+b

    int b=ADD(a,b);? ?//int b=a+b;

    int e=ADD(a,b)*ADD(a,b)//預處理int e=a+b*a+b->執行

    #define ADD(a,b) (a+b)不要求類型

    查看全部
  • #define R 10(不要分號)

    10作為一個字符串替換掉R

    #define M int main(也可以執行,預處理不考慮語法

    反復使用的常量,數組buffer(數組大?。?,便與修改

    查看全部
  • .c文件->預處理->.i文件->編譯->.s文件->匯編->.o文件->鏈接->可執行文件

    vim helloworld.c創建一個.c文件

    gcc helloworld.c編譯文件

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

    預處理:展開頭文件,宏替換

    查看全部
  • 共用體:共用體內的各元素分時占同一個地址上。

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

    2019-04-25

  • 共用體內的數據存儲的地址都是同一地址,每一時刻只能存儲一個數據。共用體的存儲地址長度是內部定義的最長數據類型的長度。而結構體的存儲地址長度是內部各數據的長度的累加(注意:每個數據的偏移量必須是自身長度的整數倍,如果不是整數倍,則填充。如int,char,int,則最后的int的偏移量是int+char=5,則int前需要填充3個字節到8個字節,才為int的整數倍。如果總長度不是內部長度最大的整數倍,則最后一個的長度要填充)

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

    2019-04-24

  • typedef有作用域的問題

    define沒有作用域的問題

    在預編譯階段 #define段會把內容替換 但typedef并不會

    .i文件是進行預編譯之后生成的文件,一般都是把頭文件包含進去,進行宏替換這些工作之后生成的文件。

    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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