typedef与define 共用体 枚举类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxiao20121314/article/details/54025176

        学习C语言的同学一看typedef和define就知道我想要说什么,typedef和define都有给变量取别名的功能,但二者的区别很大,define是在编译阶段进行的,并且被取别名的字符串是常量,定义形式有两种,有参数和无参数。teypedef的功能是为已有变量区别名。#define PI  3.14表示利用PI代替3.14,在后续的使用中将PI原样替换为3.14.有参数的宏定义与函数的定义和调用相似,但二者却有着本质的区别,宏定义是在编译时生成的,占用编译时间却不占用运行时间,而函数是在运行时调用,占用运行时间。并且函数的调用是将表达式的只计算好后传给形参,而宏定义是直接原样传给宏参数。eg:带参的宏定义:

#include<stdio.h>
#define s(a,b)  a*b
int add(int a, int b)
{
a = a + b;
return a;
}


void main()
{
int a = 10, b = 100;
printf("宏定义%d\n", s(a+1, b -90));
printf("函数调用%d", add(a, b + 10));
}

define 使用前面的字符串代替后面的字符串,二typedef使用后面的字符串代替前面的字符串,并且typedef声明的是已经定义的字符串。并且领用typedef声明的别名可以使用也可以直接使用原变量名。eg:typedef int INTER;则int a,b;等价于INTER a,b;因此可以利用typedef来简化定义的长度,eg可以将字符指针的定义简化,

typedef char* CHAR;在需要定义字符指针时就可以写为CHAR p,p1,.....;

    

      共用体的定义形式与结构体一样,但不同的是结构体所占的内存为所有元素占用内存之和,而共用体所占内存大小为所有元素中占用内存最大的元素所占的内存,并且所有元素占用相同内存,因此共用体在任意时刻只能有一个变量存在。既然如此为什么还要使用共用体呢?因为共用体可以帮我简化代码,比如说,当我们在做一个公用的系统时,许多元素之间的大部分属性都是相同的,只有个别几个属性不同,这时使用共用体就可以简化我们的代码量。举一个简单的例子,学生和老师都有名字、性别、年龄,但不同的是老师有工资,学生有班级,在我们要做一个管理系统时就可以利用结构体与共用体,eg:

struct

{

int age;

char name[20];

char sex;

union diff

{

int class;

float swage;

}d;

}people;

当是老师时只需将people.d.swage赋值,当是学生时将将people.d.class赋值,这样就可以节省大量的代码,可以避免冗余。

枚举常量也是一种基础数据类型,定义形式为:关键字 变量名 {常量列表};

eg:enum clor{right yellow,blue};定义时可以直接指定初值,如果不指定则默认第一个元素值为0,后面的值一次加一。长量列表的名称不允许重复,但列表元素的值允许设为相同的。eg:enum peo{one=0,two,three,four=1,five,six,seven};在这里four=two=1,five=three=2;six=3;seven=4;在嵌入式开发中经常使用共用体和枚举常量来设定一写量,枚举常量常被用作判断量。

猜你喜欢

转载自blog.csdn.net/xiaoxiao20121314/article/details/54025176
今日推荐