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

            

猜你喜欢

转载自blog.csdn.net/moon_rern/article/details/81172957