20240322,结构类型,枚举,

本文详细介绍了C语言中枚举的使用,包括常量符号化、自动计数枚举、枚举量的区别,以及结构类型的介绍。作者强调了枚举在命名上的优势和它主要作为符号定义而非数据类型的角色。
摘要由CSDN通过智能技术生成

 一,枚举

1.1 常量符号化 

程序中用符号表达数字,增加程序的可读性?

#include<stdio.h>//能跑,但是报错不推荐将字符串转为CHAR** 
const int red=0;
const int yellow=1;
const int green=2;
//为撒在前面? 
int main(int argc,char const *argv[]){
	//两个参数,整数,字符串数组【记不住 ,再复制一遍】 
	//整数告诉我们字符串数组有多大,数组带入函数需要另一个参数告诉大小
	int color=-1;
	char* colorName = NULL;
	//不懂
	printf("请输入你喜欢的颜色代码:\n");
	scanf("%d",&color);
	switch (color){
		case red :colorName="red";break;
		case yellow :colorName="yellow";break;
		case green :colorName="green";break;
		default :colorName="unknown";break;
	} 
	printf("你喜欢的颜色是%s\n",colorName);
	return 0;
}

输入数字,因为初始化了三个常量INT,输入数字赋值给COLOR,COLOR==1==1==YELLOW,就是COLOR==YELLOW,CHAR*COLORNAME是指针字符串,????直接给了被指的东西吗?

1.2 枚举

#include<stdio.h>
//其实只有头文件之前的变了

enum color{red,yellow,green} ;

//一般用大写区分常量 

用户定义的数据类型,ENUM 枚举类型的名字{名字0,名字1,……名字N};分号
大括号里面的就是常量符号 ,CONST INT类型,值0--N,一个值有序排列的常量集合

#include<stdio.h>
enum color{red,yellow,green} ;//声明一种新的数据类型color
void f(enum color c);
//函数需要的参数是一个ENUM里面的常量?给常量名? 
//这种类型使用的时候要带上NUME 
int main(void){
	enum color t=red;
	scanf("%d",&t);
	f(t);
	return 0;
}
void f(enum color c){
	printf("%d\n",c);
}
//输出常量的值 

实际上是以整数来做内部计算和输入输出的

1.3 自动计数的枚举

#include<stdio.h>
enum COLOR{RED,YELLOW,GREEN,NumCOLORS};
int main(void){
	int color=-1;
	char* Cnames[NumCOLORS]={
	"red","yellow","green"
	};
	char* colorName=NULL;
	printf("请输入你喜欢的颜色代码:\n");
	scanf("%d",&color);
	if(color>=0&&color<NumCOLORS){
		colorName=Cnames[color];
	}else{
		colorName="unknown";
	}
	printf("你喜欢个鬼颜色%s\n",colorName);
	return 0;
}

这是什么东西啊丢!!!!!啊啊啊啊啊啊

#include<stdio.h>
//	[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
enum COLOR{RED,YELLOW,GREEN,NumCOLORS};
//跟在最后的名字后面的字,他的值,就是前面的计数
//NumCOLORS=3? 
//好像是一种固定写法,不能直接改成3,丢,讲黑话 
int main(void){
	int color=-1;
	char* Cnames[NumCOLORS]={
	"red","yellow","green"
	};
	//指针数组,下标是枚举量 
	char* colorName=NULL;
	//初始化,0地址 
	printf("请输入你喜欢的颜色代码:\n");
	scanf("%d",&color);
//数字
	if(color>=0&&color<NumCOLORS){
		colorName=Cnames[color];
	}else{
		colorName="unknown";
	}

//遍历数组 Cnames,数字color和数组下标比较,如果相等,colorName指向那个数组单元
	printf("你喜欢个鬼颜色%s\n",colorName);
    printf("代号%d\n",colorName);
	return 0;
}

 所以这里ENUM一下,就是为了他自动计数?得到下标量,剩下的一点关系没有,改了ENUM的排序好像也没有什么关系

#include<stdio.h>

enum COLOR{YELLOW,GREEN,RED,NumCOLORS};

int main(void){
	int color=-1;
	char* Cnames[NumCOLORS]={
	"red","yellow","green"
	};
	

好像输出没什么影响,丢!!!啊啊啊啊啊 

1.4 枚举量

#include<stdio.h>

enum CO{RED=1,YELLOW,GREEN=5,NumCOS};
enum COLOR{DSF,DD,FF,NumCOLORS};
//计数也是0-N 
int main(int argc,char const* argv[]){
	printf("code for GREEN is %d\n",GREEN);//5
	printf(" %d\n",NumCOS);//6
	printf(" %d\n",NumCOLORS);//3
	return 0;
}
#include<stdio.h>
enum CO {RED=1,YELLOW,GREEN=5,NumCOS};
int main(int argc,char const* argv[]){
	enum CO co=0; 

	//ERROR:invaild conversation from 'int' to 'CO'
    //1,2,5是有意义的值,0,3,4,是没有意义的??

	printf(" %d\n",co);
	return 0;
}

 我直接一个看不懂听不懂 

虽然枚举类型可以当作类型使用,但是实际上很(bu)少(hao)用
如果有意义上排比的名字,用枚举比constint方便
枚举比宏(macro)好,因为枚举有int类型 

是C里面没有那么成功的东西,主要就是用来定义符号量,而不是当作一种数据类型来使用? 

二,结构

2.1 结构类型

2.2 结构与函数

2.3 结构中的结构

三,联合

3.1 类型定义

3.2 联合

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值