宏定义与共用体

宏定义要注意的问题:

1、宏定义一般是在函数的外面
2、宏定义必须要先定义,再使用宏。如果先使用就会编译报错。
3、宏定义中宏名一般用大写。不是语法规定的,是一般约定俗成的。

宏定义的格式

define N 321

为什么使用宏定义?

  • 在C语言中,一般使用常数的时候,都不是直接使用,而是先把该常数定义为一个宏,然后在程序中使用该宏名。这样做的好处是,等我们需要修改这个常数时,只需要在宏定义处修改一次即可。而不用到代码中到处去寻找,看哪里都用过该常数。

示例:

#include <stdio.h>

#define N (10)			// 宏定义

#define M (10 + N)

#define PI	(3.14)

#define S(r) (PI * (r) * (r))		// 计算园面积的宏
#define L(r) (2 * PI * (r))			// 计算圆的周长的宏

// 题目,使用宏定义定义一个宏,表示一年中的秒数
#define SEC_PER_YEAR (365 * 24 * 60 * 60)UL


int main(void)
{
	int a[N] = {1, 2, 3};
	int b[N];
	int c[N];
	
	
	printf("sizeof(c) = %d.\n", sizeof(c));

/*
	int a;
	
	a = 123;
	a = N;
	
	
	printf("a = %d.\n", a);
*/
	
	return 0;
}

共用体(union,联合,联合体)

  • 共用体union在定义和使用形式上,和结构体struct很相似。但是两种数据结构是完全不同的两类东西。
  • 结构体,是对多个数据的组合与封装。
  • 共用体,共用体中只有一个东西,只是它被好几个名字(和类型)共用。
#include <stdio.h>


// 定义共用体类型
union MyUnion
{
	int a;
	char b;
	float c;
};



int main(void)
{
	union MyUnion u1;		// 使用自定义的union类型来定义变量
	
	u1.a = 12933;
	
	printf("u1.a = %d, u1.b = %d.\n", u1.a, u1.b);
	
	return 0;
}

posted @ 2023-03-03 15:04  zggb  阅读(90)  评论(0)    收藏  举报