c語言(結構體)

1、C語言基本類型:字符型,整型,浮點型
2、結構體(複雜類型):自定義類型  i

3、定義變量:爲了分配空間
    類型 變量名;    //注:分配空間編譯器通過類型來分配
    初始化:定義變量同時賦值
    
  3.1定義結構體(自定義)的類型
     struct 類型名
     {
        屬性1;
        屬性2;
        屬性3;
        ...
     };
        3.1.1無嵌套結構體:所有屬性都是基本類型
            //定義人的類型:人的信息(姓名,姓別,身高)
            struct people
            {
            //姓名:
                    char name[10];
            //性別
                    char sex;
            //身高
                    unsigned short height;
            };
        3.1.2嵌套結構體:屬性是一個結構體變量
            struct people
            {
                ...
                struct *** 變量名;
                ...
            };
        
    3.2定義結構體變量:類型 變量名;
            struct 類型名 變量名;
     
     
    3.3引用結構元素:一定要通過結構體變量來引用屬性。
        .運算符 :引用複雜類型的成員
        變量名.屬性; 
        
    3.4結構體的分配空間法則:以最大字元素字節對齊    (*)
        1、查找最大元素的類型
          2、每個元素都分配以最大類型的最小的倍數。
        3、共享空間?
        
        
    注:gcc編譯器可以指定對齊方式(這不是C語言的標準)
        __attribute__((packed))
        
    3.5結構體變量之間賦值:   注:同類型之間,不同類型的結構體是不能賦值的
        struct people a,b;
        a=b;

  1. 0、指針

  1、指針類型: 基本類型 
  2、空指針類型變量:沒有意義,只是一個指針空間,用於記錄地址(不能運算)
        void* 變量;
    注:由於空間指針void*不知道尺寸(類型),是不能進行+ -運算的
  3、空地址:每個數據空間都有地址(地址>0),設置地址爲0的指針爲空指針(不指向任何的元素)        
        注:指針變量必須初始化
        typedef NULL (void*)0;
        
(筆試和麪試)
1、作用域:能被引用的區間
  1、局部變量:在函數內定義(在函數)
  2、全局變量:在函數外定義(文件內)
 注:引用變量,一定注意作用域
2、生命週期:分配空間到釋放
  1、動態變量:auto
  2、靜態變量:
  3、堆區 (程序員空間):空間由用戶申請,由用戶來釋放空間。
     API: 申請  malloc(size_t bytes)    釋放:free      
        注:bytes代表字節的數量
        注:malloc/realloc返回值爲NULL,申請失敗
        注:頭文件爲 stdlib.h
    3.1使用步驟:
        1、申請 p=malloc(size_t)
        2、使用 
        3、釋放    free(p);
        3.1.1變量空間
            
        3.1.2數組空間:
            概念:是一塊同類型且連續的存儲空間
            
1、內存複製:
    memcpy(des,src,size);    string.h

            

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章