当前位置: 代码迷 >> 综合 >> C语言 -- #deifne 和 typedef 的使用
  详细解决方案

C语言 -- #deifne 和 typedef 的使用

热度:102   发布时间:2023-11-24 18:18:53.0

目录

一、#definef (宏定义)

二、typedef

1、typedef是干什么的?

2、typedef代替复杂类型 


一、#definef (宏定义)

#define 可以定义一个标识符来表示一个常量,在后面的程序代码中就可以用这个标识符来代表这个常量。 格式如下:

#define 标识符 常量                                           // 注意后面不加“ ; ”

特点:宏定义的标识符不占内存,只是一个符号,预编译后就不存在了。

用#define可以让我使用时更方便灵活,当我们在程序中频繁使用某一个数据,当我们需要改变这个数据时,就得把这么多全部改一遍,但是当我们用宏定义后,仅需要改变一下宏定义的常量。

下面举个例子,求一个正方体的一面的面积,表面积,体积

//求一个正方体的一个面的面积,表面积,体积 
#include <stdio.h>#define A 4      //假设正方体的棱长是4 ,用A来表示 int main()
{int area_1,area,vlm; area_1 = A * A;    //一个面的面积 area = 6 * A * A;  //表面积 vlm = A * A *A;    //体积printf("area_1: %d\narea: %d\nvolume: %d\n",area_1,area,vlm);return 0; }  

用到了很多正方体棱长A,如果棱长改变再计算得话 仅仅改变宏定义时值就可以。

另外,还有一个“ #undef 标识符 ”,它的作用是终止这个宏定义标识符的作用域,把他放在想结束该宏定义的地方即可,一般是用不到的。

二、typedef

1、typedef是干什么的?

我们可以用typedef指定新的类型名来代替已有的类型名

typedef  已有类型名   新类型名 ;

 例如, typedef  int   G;  就是用G代表 int 。

typedef char Str;  char a; 和 Str a;  这两条句子等价 

2、typedef代替复杂类型 

typedef 除了可以代替int char float等这些简单的类型,还可以代替一些复杂的。

(1)命名一个新的类型名代表结构体

typedef struct
{int a;char b;flaot c;
} Day;  //这里Day就代表这个结构体类型Day stu; //定义结构体变量,等价于下面程序
-------------------------------------------------------
struct
{int a;char b;float c;
} stu;  //与上面等价

(2)命名一个新的类型名代表数组类型

typedef int Stu[10]; //声明Stu为整型数组类型名
Stu a;  //定义a为整形数组变量,有10个元素
等价于:
int a[10];

  (3)命名一个新的类型名代表指针类型

typedef int* Pp; //声明Pp为整型指针变量
Pp a;   //定义a为整型指针变量

(4)命名一个新的类型名代表指向函数的指针类型

typedef int (*P)();  //声明P为指向函数的指针类型,该函数返回整数
P p1,p2;        //定义p1,p2为指向函数的指针类型的变量