C语言enum和typedef

C语言enum和typedef

一、enum

      1、enum用于定义离散值类型

      2、enum定义的值是真正意义的常量

二、typedef

      1、typedef用于给一个已经存在的数据类型重命名

      2、typedef本质上不产生新类型(面试可能问你能说说typedef具体意义么?这时面试者千万不能说:typedef用于产生一个新类型)

       3、typedef重命名的类型:

               (1)、可以再typedef语句之后定义(注意:第一次看见的人,可能不理解,但是确实可以)

               (2)、不能被unsigned和signed修饰

                       用法:

                                typedef   type   new_name

三、测试代码

#include <stdio.h>
#include <malloc.h>

#define SIZE 10

enum
{
    ARRAY_SIZE = SIZE,
    LENGTH_ARRAY = SIZE,
};
enum Color
{
    RED,
    GREEN = 2,
    BLUE,
};
void Pinitcolor(enum Color c)
{
   switch(c)
   {
      case RED:
         printf("Color : RED (0x%08X)\n",c);
         break;
      case GREEN:
         printf("Color : GREEN (0x%08X)\n",c);
         break;
      case BLUE:
         printf("Color : BLUE (0x%08X)\n",c);
         break;
      default:
         printf("Color : RED (0x%08X)\n",c);
         break;
   }
}
void Initarray(int array[])
{
    int i;
    for(i = 0;i < LENGTH_ARRAY;i++)
    {
        array[i] = i + 1;
    }
}
void Printarray(int array[])
{
    int i;
    for(i = 0;i < LENGTH_ARRAY;i++)
    {
        printf("array[%d] = %d\n",i,array[i]);
    }
}

typedef int Int32;

struct _tag_point
{
    int x;
    int y;
};

typedef struct _tag_point Point;

typedef struct
{
    int length;
    int array[];
}SoftArray;

typedef struct _tag_list_node ListNode;

struct _tag_list_node
{
    ListNode* next;
};

int main()
{
    Int32 i = -100;               //int
    //unsigned Int32 ii = 1;      //编译错误  typedef前面不能用unsigned或者signed
    Point p;
    SoftArray* sa = NULL;
    ListNode* node = NULL;
    enum Color c = BLUE;
    int array[LENGTH_ARRAY] = {0};
    Pinitcolor(c); 
    Initarray(array);
    Printarray(array);
    return 0;
}

代码很简单,这里不讲了


猜你喜欢

转载自blog.csdn.net/liuchunjie11/article/details/80435033
今日推荐