C语言中的结构体


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:

易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343

在这里插入图片描述


🍊生活中的数据

简介:

  我们在现实生活中,在对具体的队象进行描述的时候,发现对象是比较复杂的。一般由不同的类型组合在一起。例如:我们描述一个人的时候,习惯描述他的姓名,年龄,分数等。这些不同类型的数据是互相联系组成了一个有机的整体。此时,就要用到一种新的构造类型数据——结构体(struct).

🍊 数据在C语言中的使用

简介:

	在现实生活中,我们定义一个职工workr的结构体,在这个结构体中包括职工编号、姓名、
性别、年龄、工资、家庭住址等信息。我们可以用一个结构体数据类型的变量来存放某个
职工的所有相关信息。并且,用户自定义的数据类型worker也可以与intdouble等基本数据类型一样,
用来作为定义其他变量的数据类型

//worker
char name[20];  //姓名
int age ;  //年龄
double offer;  //薪水
int id;  //编号

结构体的定义

方法一:先声明。再定义

1)结构体类型的声明
struct 结构体名
{
	数据类型1 变量名1;
	数据类型2 变量名2;
	数据类型3 变量名3;
	数据类型4 变量名4....
}2)结构体变量的定义

变量的定义:struct 结构体名 变量名;

访问结构体对象内部成员变量的方法:
A:结构体普通变量通过" . "来访问内存的成员属性。
B:结构体指针变量通过" -> "来访问内存的成员属性。

eg:
struct worker
{
	char name[20];
	int age;
	double offer;
	int id;
}

struct worker wk;
struct worker *p = &wk;

strcpy(wk.name,"lisi");
wk.age = 20;
wk.offer = 20000;

------------------------

strcpy(p->name,"lisi");
p->age = 20;
p->offer = 20000;

代码演示:

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

struct student
{
	char name[20];
	int id;
	int score;
	
};

int main()
{
	struct student st;
	struct student *sp = &st;
	
	strcpy(st.name,"lisi"); //不能是st.name = "lisi";因为name是数组名代表首元素地址,不能将字符串赋值给地址
	st.id = 1;
	st.score = 100;
	
	//strcpy(sp->name,"lisi");
	//sp->id = 1;
	//sp->score = 100;

	printf("NAME\tID\tSCORE\n");//  \t是跳格符 表示多个空格
	printf("%s\t%d\t%d\n",st.name,st.id,st.score);
	return 0;
}

方法二:在声明类型的同时定义变量

struct 结构体名
{
	数据类型1 变量名1;
	数据类型2 变量名2;
	数据类型3 变量名3......
	
}变量名列表;

例如:
struct student
{
	char name[20];
	int id;
	int score;
}st,*sp;

//st<====>struct student st;
//*sp <====>struct student *sp;
struct student *sp = &st;

st.id = 1;
sp->id = 1;

方法三:省略结构体名,直接定义变量

格式:

struct
{
	数据类型1 变量名1;
	数据类型2 变量名2;
	数据类型3 变量名3......
}变量1,变量2,变量3.....

注意:此种方法,只能在变量名列表的位置定义变量,其他位置不能定义变量。
===============================================================
例如:
struct
{
	char name[20];
	int id;
	int score;
}st,*sp;
struct
{
	int m;
	int n;
}s2;

代码:

#include <stdio.h>

struct
{
	char name[20];
	int id;
	int score;
}st1 = {"rose",2,100};  //结构体初始化

int main()
{
	printf("%s%d%d\n",st1.name,st1.id,st1.score);
	return 0;
}

🍊结构体大小计算

代码:

#include <stdio.h>

struct student
{
	char name[5]; //5
	int id; //2
	short score;//2
};
int main()
{
	struct student st = {"lisi",1,100};
	printf("sizeof(st) = %d\n",sizeof(st)); //16
	return 0;
}

在这里插入图片描述解释:在这里插入图片描述
在这里插入图片描述

🍊结构体在函数中的使用

#include <stdio.h>

struct student
{
	char name[5];
	int id;
	short score;
};

//指针适用:①需要用指针改变原变量的值;②接收的内容内存空间比较大
void output_student(struct student *sp)
{
	printf("%d\n",sizeof(sp));//4
	printf("%s %d %d\n",sp->name,sp->id,sp->score);
}
int main()
{
	struct student st = {"lisi",1,100};
	output_student(&st);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值