C++数据结构和算法分享专题

11_enum,sizeof,typedef分析

2018-03-04  本文已影响17人  编程半岛

关键词:enum, sizeof, typedef

1. 枚举类型的使用方法

#include <stdio.h>

enum Color
{
    GREEN,
    RED = 2,
    BLUE
};

int main()
{
    enum Color green = GREEN;
    enum Color red = RED;
    enum Color blue = BLUE;
    
    printf("green = %d\n", green);
    printf("red = %d\n", red);
    printf("blue = %d\n", blue);

    return 0;
}

输出结果:

green = 0
red = 2
blue = 3

2. 枚举类型的特殊意义

#include <stdio.h>

// 用无名枚举类型定义整型常量
enum 
{
    ARRAY_SIZE = 10
};

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

3. enum的使用

#include <stdio.h>

enum 
{
    ARRAY_SIZE = 10
};

enum Color
{
    RED = 0x00FF0000,
    GREEN = 0x0000FF00,
    BLUE = 0x000000FF
};

void PrintColor(enum Color color)
{
    switch(color)
    {
        case RED:
            printf("Color: RED (0x%08x)\n", color);
            break;
        case GREEN:
            printf("Color: GREEN (0x%08x)\n", color);
            break;
        case BLUE:
            printf("Color: BLUE (0x%08x)\n", color);
            break;
        default:
            printf("Color: ERROR");
            break;
    }
}

void InitArray(int* arr)
{
    for(int i=0; i<ARRAY_SIZE; i++)
    {
        arr[i] = i + 1;
    }
}

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

int main()
{
    int array[ARRAY_SIZE] = {0};
    
    enum Color green = GREEN;
    
    InitArray(array);
    
    PrintArray(array);
    
    PrintColor(green);
    
    
    return 0;
}

输出结果:

1
2
3
4
5
6
7
8
9
10
Color: GREEN (0x0000ff00)

4. sizeof关键字的用法

#include <stdio.h>

int main()
{
    int i = 0;
    
    printf("%d\n", sizeof(int));
    printf("%d\n", sizeof(i));
    printf("%d\n", sizeof i);
    
    return 0;
}

5. sizeof的本质

#include <stdio.h>

int main()
{
    int var = 0;
    int size = sizeof(++var);   // sizeof为C语言关键字,不是函数,在编译期间sizeof将被具体的值所提换,因此在编译期间 数值4将替换sizeof(++var),语句++var不会执行
    
    printf("var = %d, size = %d\n", var, size);
    
    return 0;
}

输出结果:

var = 0, size = 4

6. 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;          // int
//  unsigned INT32 ui = 1;  // 由typedef重命名的变量不能被unsigned修饰
    
    Point p;                // struct _tag_point
    SoftArray* sa = NULL;   // struct
    ListNode* node = NULL;  // struct _tag_list_node
    
    return 0;
}

7. 小结

声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

上一篇 下一篇

猜你喜欢

热点阅读