基础十二

1.review

2.typedef深入分析

1,先用原类型定义变量;
2,在定义前加typedef;
3,将原变量的名字,改成你需要的类型名.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

//typedef  typedefine typerename
//typedef 对现有类型,取别名.不能创造新的类型

//typedef 是一个常用于对结构体取别名的关键字.更好用的结构体


typedef char  int8;
typedef short  int16;
typedef int   int32;
typedef long long  int64;


typedef int ARRAY[10];


typedef struct stu
{
    
    
    char name[40];
    int num;
    char age;
    float score;
}Stu;




int main(int argc,char *argv[])
{
    
    
    // 处理由不同类型成员构成的构造类型,要采用结构体的方式

    struct stu s1;


    int8 i8;
    int16 i16;
    int32 i32;
    int64 i64;

    int arr[10];
    printf("sizeof(arr) = %d\n  sizeof(int[10]) = %d\n",sizeof (arr),sizeof(int[10]));

    ARRAY arr2;
    printf("sizeof(arr2) = %d\n ",sizeof (arr2));

    Stu s1;
    Stu s2;
    Stu s3;
    
    return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#if 0

typedef typerename只有对己有类型,取别名。
1,用现有类型生成变量。
2,在变量定义之前加typedef3,将定义的变量换成,你要的别名。


typedef构成的c语言语句参与编译
#define构成的语句,在预处理阶段处理完毕
#define DINT   int  在预处理阶段,把DINT换成int


#endif


#define major_double double

int main(int argc,char *argv[])
{
    
    
    typedef int major_int;
    major_int a,b,c,d;
    printf("sizeof(int) = %d sizeof(int) = %d\n",sizeof (int),sizeof (major_int));


     typedef int major_array[10];
     major_array arr;
     printf("sizeof(major_array) = %d sizeof(arr) = %d\n",sizeof (major_array),sizeof (arr));

     for (int i=0;i<10;i++) {
    
    
         arr[i] = i;
         printf("%d\n",arr[i]);
     }

     major_double ddd;
     printf("sizeof(major_double) = %d sizeof(ddd) = %d\n",sizeof (major_double),sizeof (ddd));


    return 0;
}

在这里插入图片描述

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#if 0

typedef typerename只有对己有类型,取别名。
1,用现有类型生成变量。
2,在变量定义之前加typedef3,将定义的变量换成,你要的别名。


typedef构成的c语言语句参与编译
#define构成的语句,在预处理阶段处理完毕
#define DINT   int  在预处理阶段,把DINT换成int


#endif

#define DpChar char *;

int main(int argc,char *argv[])
{
    
    

    char *p,q;
    printf("sizeof(p) = %d sizeof(q) = %d\n",sizeof (p),sizeof (q));

    typedef  char *pChar;
    pChar a,b;
    printf("sizeof(a) = %d sizeof(b) = %d\n",sizeof (a),sizeof (b));


    #define Dpchar char*
    Dpchar m,n;
    printf("sizeof(m) = %d sizeof(n) = %d\n",sizeof (m),sizeof (n));

    return 0;
}

在这里插入图片描述

3.结构体初始化

初始化是一种特殊的语法跟赋值不等价

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

struct stu
{
    
    
    char name[100];
    int num;
    char sex;
    float score;
};

//初始化是一种特殊的语法跟赋值不等价

//凡是基本类型,既可以在定义的时侯初始化,也可以先定义再赋值。
//凡是构造类型,要么在定义的时候实始化,不可以先定义再以实始化的方式赋值

int main(int argc,char *argv[])
{
    
    

    struct stu s = {
    
    "major",1001,'m',100};
    strcpy(s.name,"major_S");//错误:s.name="major_s";
    s.num = 1002;
    s.sex='m';
    s.score=99;
    printf(" name:%s\n num:%d\n sex:%c\n score:%f\n ",s.name,s.num,s.sex,s.score);
    return 0;
}

在这里插入图片描述

4.结构体赋值传参作返回值

5.结构体数组及应用

6.结构体嵌套与结构体大小

7.结构体中指针使用注意事项

8.基于结构体栈的实现与类型大总结

9.共用体基础与提高

在c语言中不同的成员使用共同的存储区域的数据构造类型称为共用体简称共用,又称联合体。

共用体在定义。说明和使用形式上与结构体相似

两者本质上的不同仅在于使用内存的方式上。

union在操作系统底层的代码中用的比较多,因为它在内存共享布局上方便且直观。所以网络编程,协议分析,内核代码上有一些用到union,比较好懂,简化了设计。


共用体占用空间的大小取决于类型长度最大的成员

而结构体变量所占内存长度是各成员占的内存长度之和。

每个成员分别占有其自己的内存单元。


猜你喜欢

转载自blog.csdn.net/qq_41375318/article/details/113942528