11enum,sizeof,typedef

枚举类型的使用方法

  • enum是C语言中的一种自定义类型
  • enum值可以根据需要自定义整形值
  • 第一个定义的enum值默认为0
  • 默认情况下的enum值是在前一个定义值得基础上加1
  • enum类型的变量只能去定义时的离散值

例子1:enum的使用

#include<stdio.h>

int main()
{
    enum Color
    {
        GREEN,
        RED = 2,
        BLUE
    };
    enum Color c = GREEN;
    printf("c = %d\n",c); // 0
    c = BLUE;
    printf("c = %d\n",c); // 3
    return 0;
}

枚举类型的特殊含义

enum中定义的值是C语言中真正意义上的常量,在工程中enum多用于定义整形常量

例子2:enum的使用

#include<stdio.h>

int main()
{
    enum
    {
        ARRAY_SIZE =10
    };
    int array[ARRAY_SIZE] = {0};
    int i = 0;
    for(i=0;i<ARRAY_SIZE;i++)
        array[i] = i + 1;
    for(i=0;i<ARRAY_SIZE;i++)
        printf("array[i] = %d\n",array[i]);
    return 0;
}

sizeof关键字

  • sizeof是编译器的内置指示符
  • sizeof用于计算类型或变量所占用内存大小
  • sizeof的值在编译期就已经确定

注意:

  • sizeof是C语言的内置关键字而不是函数
  • 在编译过程中所有的sizeof将被具体的数值所替换
  • 程序的执行过程与sizeof没有任何关系

例子3:sizeof的本质

#include<stdio.h>

int main()
{
    int var = 0;
    int num = sizeof(var++);
    printf("var = %d,num = %d\n",var,num); //0 4
    return 0;
}

typedef的意义

如果面试官问typedef的具体的意义,你怎么回答?
如果回答typedef用于定义一种新的类型。 X

typedef用于给一个已经存在的数据类型起个别名,typedef本质上不能产生新的类型

typedef重命名的类型:

  • 可以在typedef语句之后定义
  • 不能被unsigned和signed修饰

用法:

typedef type new_name;

例子4:typedef例子

#include<stdio.h>
typedef int Int32;
struct _tag_point
{
    int x;
    int y;
};
typedef struct _tag_point Point;
typedef struct
{
    int len;
    int array[];
}SoftArray;

typedef struct _tag_list_node ListNode;
struct _tag_list_node
{
    ListNode* next;
};

int main()
{
    Int32 i = -100;
    // unsigned Int32 ii= 0;
    Point p;
    SoftArray* sa = NULL;
    ListNode* node = NULL;

    return 0;
}

小结

  • enum用于定义离散值类型
  • enum定义的值是真正意义上的常量
  • sizeof是编译器的内置指示符
  • sizeof不参与程序的执行过程
  • typedef用于给类型起一个别名,别名的类型可以在typedef语句之后定义

猜你喜欢

转载自www.cnblogs.com/yanyun888/p/9150311.html