AutoLeaders控制组—C语言结构体学习笔记

AutoLeaders控制组—C语言结构体学习笔记

枚举

枚举可以让一个单词来表示数字

写法为:

enum 枚举类型名字{名字0,…,名字n};//这句话要在函数以外使用
如:enum color{red,yellow,green};

这里红黄蓝为常量符号,类型为int

这样就表明枚举了三个量红黄蓝,枚举的第一个为0,第二个为1…

可以直接这些名字当数字用

若想要自己定义枚举的值,可以写成

enum color{red,yellow=5,green};

而此时,red=0,yellow=5,green=6;

每一个量都为前一个量加一

结构类型

结构为一系列变量的总和

struct date{
	int month;
	int day;
	int year;
};

最后一定要有分号,类型可以不一样

这样就定义了一个结构date,里面有3个变量年月日

这一个可以写在函数里面,但只有这个函数可以使用

也可以写在函数外面,那就在这个结构类型声明的后面都可以使用

结构变量

每一个结构都可以有很多个结构变量,每个结构变量里面包含结构体里面的所有变量

struct date today;
today.month=01;
today.day=01;
today.year=2022;

today就是一个结构变量

也可以换一个写法

struct date today={07,31,2014};//这里第一个数就给第一个变量,第二个数给第二个变量

也可以只输入其中一两个变量

struct date today={.month=7,.year=2014};

这样day就默认为0

也可以在定义类型时就定义结构变量

struct date{
	int month;
	int day;
	int year;
}p1,p2;

这里相当于有两个结构变量p1、p2,每一个变量都含有大括号里面的3个变量

结构运算

可以直接用一个变量p1=(struct point){5,10};//相当于p1.x=5;p1.y=10;

也可以直接让一个变量等于一个结构变量

p1=p2;//相当于p1.x=p2.x;p1.y=p2.y;

对结构变量取地址需要用&

.比&优先级高

结构与函数

把结构传入函数里与其他变量一样,传入的是值,在函数里无法改变函数外的结构的值

若想要从函数中改变函数外传进去的结构,可以用函数返回值返回

#include<stdio.h>

struct point{
	int x;
	int y;
};

struct point getstruct(void){
	struct point p;
	scanf("%d",&p.x);
	scanf("%d",&p.y);
	printf("%d,%d",p.x,p.y);
	return p;
}

int main()
{
	struct point a={0,0};
	a=getstruct();
	printf("%d,%d",a.x,a.y);
}

也可以使用指针指向结构体

struct point{
	int x;
	int y;
}my;

struct point *p=&my;
使用时有两种写法:
(*p).x=1;
p->y=2;
第二种更好

还可以定义结构变量为数组

#include<stdio.h>
struct time{
	int hour;
	int minutes;
	int seconds;
};

int main()
{
	struct time a[5]={
		{11,59,59},{12,0,0},{1,29,59},{23,59,59},{19,12,27}//这里每一个大括号里都是一个数组单元
	};
}

结构中的结构

struct time{
	int hour;
	int minutes;
	int seconds;
};

struct day{
	struct time d1;
	struct time d2;
};

类型定义

typedef可以用来声明一个类型的名字,如

typedef int a;表面把a表示int,使用a可以和使用int一样使用

也可以声明结构类型,如有这样一个结构

struct time{
	int hour;
	int minutes;
	int seconds;
};

可以使用typedef进行声明

typedef struct time{
	int hour;
	int minutes;
	int seconds;
} date;

表明date就是上面那个struct定义的变量

然后想要表明使用这个结构只需

date d={1,1,2022};

就表明这个就是结构struct time

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值