C语言--(十 一)(Lellansin) 共同体、枚举typedef和多文件编程

共同体

结构体:存储多个类型。

共同体:多类型共存,实际只能存储一个类型的变量, 而不是多个变量共存。

union Person {
    int age;
    char name[256];
    char sex[2];
}        
// 共同体大小:最大成员, 256的字符数组

struct Person {
    int  age;
    char name[256];
    char sex[2];
}
// 结构体大小:所有成员之和  262 =  4 + 256 + 2

枚举

颜色举例

enum COLOR {
    red,
    blue,
    white,
    black,
    green,
    yellow
};

真假举例

#include<stdio.h>

enum BOOL {
    FALSE,
    TRUE
};

main() {
    enum BOOL flag = TRUE;
    if(...)
    ...
}

swap实例:返回值用TRUE, FALSE代替 1, 0

#include<string.h>
#include<windows.h>
#include<stdio.h>
#include<string.h>


enum BOOL {_TRUE = 1, _FALSE1 = 0};

int swap (int *x, int *y) {
	int tmp;
	tmp = *x;
	*x = *y;
	*y = tmp;

	return _TRUE;
}



void main() {
	int i =10, j =15;
	int x;

	flag = swap (&i, &j);

	printf("%d %d \n", i, j);
	printf("%d", flag);
	Sleep(10000);
}
 
 

值得注意的是

enum {TRUE ,FALSE, OTHER}  // 会自动分配 0, 1, 2

enum {TRUE = 1 ,FALSE, OTHER}    // 会自动分配 1, 2, 3

enum {TRUE = 1 ,FALSE, OTHER = 10, RAND}    // 会自动分配 1, 2, 10, 11

 

typedef 类型定义

 

通过typedef来定义自己的类型

1 用于 int 类:

typeof int money;

int i = 10;
money m = 200;
printf("int i = %d \nmoney m = %d", i, m);


typedef int money
此时money就是我们定义的类型int,实际上跟int 没差,但能让人更好读懂。

定义的时候类同:
int i = 10;
money m = 200;
printf("int i = %d \n money m = %d", i, m);

2 用于结构体:

// 常见用法

typedef struct {
    int hour;
    int minute;
    int second;
} TIME;

// 原本要:
// struct TIME t1;

// 现在可以直接:
TIME t1;

3 实际应用 枚举

#include<string.h>
#include<windows.h>
#include<stdio.h>
#include<string.h>


enum BOOL { _TRUE = 1, _FALSE = 0 };  //提前定义一下

enum BOOL swap (int *x, int *y) {
	int tmp;
	tmp = *x;
	*x = *y;
	*y = tmp;

	return _TRUE;  // 运行成功返回真
}



int main() {
	int i = 1;
	int j = 15;
	

	enum BOOL flag;  // 这里需要定义一下flag, 呼应enum BOOL { _TRUE = 1, _FALSE = 0 };  
        // 不过貌似BOOL flag一样的

	flag = swap(&i, &j);  // 这里有返回值

	if (flag != _FALSE) {
		printf("i = %d \j = %d", i, j);
	}
	Sleep(10000);
}
 

4 实际应用 枚举 & typedef

#include<string.h>
#include<windows.h>
#include<stdio.h>
#include<string.h>

typedef enum {
	_TRUE = 1, _FALSE = 0
} BOOL;
// 替换了原来的
//enum BOOL { _TRUE = 1, _FALSE = 0 }; 

BOOL swap (int *x, int *y) {
	int tmp;
	tmp = *x;
	*x = *y;
	*y = tmp;

	return _TRUE;
}

int main () {
	BOOL flag;  //替换了原来的 enum BOOL flag
	int i = 1;
	int j = 15;

	flag = swap(&i, &j);
	if (flag != _FALSE) {
		printf("i = %d, j = %d", i, j);
	}
	Sleep(10000);

}

5 为什么要用typedef?

常见情况:

1 用#define 宏定义一些常量

2 typedef定义一个替换类型

3 enum来设置一个枚举类型

eg:

typedef int money

 

多文件编程

代码量大,为了区分功能,需要将不同功能的函数写在不同的文件中

extern 外面的,外来的

extern 声明外部变量

两个文件放在一个工程中

文件1:t1.c

//第一个文件
#include<stdio.h>

extern char text[];
void setText(void);  // 这里是对后面函数的声明

int main () {

    setText();  // 执行,上面有对这里的声明
    printf("%s \n", text);

}

文件2:t2.c

//第二个文件
#include<string.h>

char text[256];

void setText() {

    strcpy(text, "hello world");

}

 

头文件

文件1:t1.c

//第一个文件
#include<stdio.h>
#include"t2.h"

int main () {

    setText(); 
    printf("%s \n", text);

}

文件2的头文件:t2.h

//第二个文件
extern char text[];
void setText(void);

文件2:t2.c

//第三个文件
#include<string.h>

char text[256];

void setText() {

    strcpy(text, "hello world");

}

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值