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

C语言 -- #deifne 和 typedef 的使用,第1张

目录

一、#definef (宏定义)

二、typedef

1、typedef是干什么的?

2、typedef代替复杂类型 


一、#definef (宏定义)

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

格式如下:

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

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

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

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

//求一个正方体的一个面的面积,表面积,体积 
#include 

#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为指向函数的指针类型的变量

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/675035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存