C语言_结构体的4种定义初始化方式及案例
结构体是一种构造数据类型 (构造数据类型:数组类型、结构体类型(struct)、共用体类型(union))。用途:把不同类型的数据组合成一个整体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。
第一种:
#include <stdio.h>
#include <string.h>
int main()
{
struct PERSON{
int age;
int height;
char name[15];
}p1;
p1.age = 28;
p1.height = 178;
strcpy(p1.name, "phper");
printf("%d,%d,%s",p1.age,p1.height,p1.name);
}
第二种:
#include <stdio.h>
#include <string.h>
struct PSERSON{
int age;
int height;
char name[15];
}p1={
age:28,
height:178,
name:"phper"
};
printf("%d,%d,%s",p1.age,p1.height,p1.name);
}
第三种:
#include <stdio.h>
#include <string.h>
struct PSERSON{
int age;
int height;
char name[15];
}p1={
.age = 28,
.height = 178,
.name = "phper"
};
printf("%d,%d,%s",p1.age,p1.height,p1.name);
}
第四种:
#include <stdio.h> #include <string.h> struct PSERSON{ int age; int height; char name[15]; }p1={28,178,"phper"}; printf("%d,%d,%s",p1.age,p1.height,p1.name); }
结果
小案例:
#include <stdio.h> #include <string.h> struct TEST { int age; int height; char name[15]; }; void function_print(struct TEST p1) { printf("%d\n",p1.age); printf("%d\n",p1.height); printf("%s\n",p1.name); } int main() { struct TEST test={28,178,"phper"}; function_print(test); return 0; }
结果:
---------再来一个案例结合注释吸收一下---------
#include <stdio.h> int main() { //定义结构体类型 struct Person { int age; int height; char *name; }; //初始化的4种方式 //1.定义的同时初始化 struct Person p1 = {28,178,"phper"}; //2.先定义再逐个初始化 struct Person p2; p2.age = 28; p2.height = 178; p2.name = "phper"; //3.先定义再一次性初始化 struct Person p3; p3 = (struct Person){28,178,"phper"}; //注意:结构体和数组在这里的区别,数组不能先定义再进行一次性初始化 //结构体要明确的告诉系统{}中是一个结构体 //4.指定将数据赋值给指定的属性 struct Person p4 = { .age=28 , .height=178, .name="phper"}; //打印结构体中取数据 //拿p4测试 printf("%d\n",p4.age); printf("%d\n",p4.height); printf("%s\n",p4.name); return 0; }
分类:
C语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!