🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP创作者(创作新人榜No.38)~[CSDN]周榜102﹣总榜826 ⇿ 全网访问量35w+🏅

🆔本文由 謓泽 原创 发布在51CTOP 如需转载还请通知⚠

📝个人主页-​謓泽51Ctop的博客​📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

📣系列专栏-​謓泽51Ctop的分类_51CTO博客​🎓

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

【C语言】结构体成员类型_重命名

结构体成员的类型 

结构体成员的类型,可以是变量数组指针,甚至是其它的结构体,这里就不每个去列举了。

结构体成员

  • 结构体变量的访问成员,是通过操作符(.)访问的

结构体(套娃‘doge’)

 在结构体成员类型中我说了下,但有些小伙伴可能会有点不清楚,在这里我把代码给大家,注意:   在上面结构体我使用了红色字体所标注的.

#include<stdio.h>
//学生家地址
struct address
{
char T [20];
};
//描述一个学生
typedef struct student //typedef —— 可以使用它来为类型取一个新的名字
{
char name[20]; //学生名字
char sex[5]; //学生性别
char id[20]; //学生学号
short int age; //学生年龄
struct address S;
}student; //注意:对结构体类型进行重命名
int main(void)
{
// struct student mation;// mation —— 结构体类型的变量
student mation = { "法外狂徒张三", "man", "10086", 18, {"康达小区三懂一单元"} };
printf("%s\n", mation.name);
printf("%s\n", mation.sex);
printf("%s\n", mation.id);
printf("%d\n", mation.age);
printf("%s\n", mation.S.T);//注意,由于我们是把一个结构体类型放在另一个结构体,所以这里需要找两次。

return 0;
}

【C语言】结构体成员类型_#include_02


结构体传参和传值

1.传参

注意,在print函数当中记得定义结构体关键字。 

#include<stdio.h>
//描述一个学生
typedef struct student //typedef —— 可以使用它来为类型取一个新的名字
{
char name[20]; //学生名字
char sex[5]; //学生性别
char id[20]; //学生学号
short int age; //学生年龄
}student; //注意:对结构体类型进行重命名

void print(student tmp)
{
printf("%s\n", tmp.name);
printf("%s\n", tmp.sex);
printf("%s\n", tmp.id);
printf("%d\n", tmp.age);
}

int main(void)
{
// struct student mation;// mation —— 结构体类型的变量
student mation = { "法外狂徒张三", "man", "10086", 18 };
//实现传参
print(mation);

return 0;
}

【C语言】结构体成员类型_#include_03

2.传址

注意:print2函数中打印的,-> (操作符)。在这里tmp2指针箭头指向对象的内容。

#include<stdio.h>
//描述一个学生
typedef struct student //typedef —— 可以使用它来为类型取一个新的名字
{
char name[20]; //学生名字
char sex[5]; //学生性别
char id[20]; //学生学号
short int age; //学生年龄
}student; //注意:对结构体类型进行重命名
void print2(student *tmp){
printf("%s\n", tmp->name);
printf("%s\n", tmp->sex);
printf("%s\n", tmp->id);
printf("%d\n", tmp->age);
}
int main(void){
// struct student mation;// mation —— 结构体类型的变量
student mation = { "法外狂徒张三", "man", "10086", 18 };//结构体成员变量进行初始化
//实现传址
print2(&mation);
return 0;
}

【C语言】结构体成员类型_操作符_04

注→结构体指针实际上指向的就是结构体类型当中成员变量的地址。就一句话。

各位,这两个函数如果要选择一个的话,选择第2个。因为: 

  1. 传参:如果当我们用实参传递给形参的话,其实就是一份临时拷贝。这样的话就要把所有的数据内存空间给再copy一份下去。放在其它的内存上,在这里我取名为tmp。就很简单就是例如,是200个字节那么你传的参数就也要两百个字节,这就会导致空间的一个浪费就会非常严重滴,同时你copy过去还需要一定的时间
  2. 传址:这里我传过去的仅仅是地址(&),一个地址就是4字节(32位)8个字节(64位),注意这里是int类型的数据类型所以是4个字节以及32个比特位,用三十二位的二进制来进行表达。

如果要选择一种,我们尽可能的去选择传址,因为效率更高些,而且还可以省出一定内存空间,尤其是对大型项目的看法,两种我们就可以去选择传址。

结论:当结构体传参的时候要传入结构体的地址。


好,那么本篇博客就带大家如何去学习结构体初始了,那么觉得本篇博客对你起到帮助的话,记得给博主一个点赞,当然能三连我会更开心的。其实写博客也算是对以前的知识点的一个总结吧,加油。