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[];
- }p1={,,"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[];
- };
- 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={,,"phper"};
- function_print(test);
- return ;
- }
结果:
---------再来一个案例结合注释吸收一下---------
- #include <stdio.h>
- int main() {
- //定义结构体类型
- struct Person
- {
- int age;
- int height;
- char *name;
- };
- //初始化的4种方式
- //1.定义的同时初始化
- struct Person p1 = {,,"phper"};
- //2.先定义再逐个初始化
- struct Person p2;
- p2.age = ;
- p2.height = ;
- p2.name = "phper";
- //3.先定义再一次性初始化
- struct Person p3;
- p3 = (struct Person){,,"phper"};
- //注意:结构体和数组在这里的区别,数组不能先定义再进行一次性初始化
- //结构体要明确的告诉系统{}中是一个结构体
- //4.指定将数据赋值给指定的属性
- struct Person p4 = { .age= , .height=, .name="phper"};
- //打印结构体中取数据 //拿p4测试
- printf("%d\n",p4.age);
- printf("%d\n",p4.height);
- printf("%s\n",p4.name);
- return ;
- }
C语言_结构体的4种定义初始化方式及案例的更多相关文章
- C语言_结构体变量指针做函数参数的使用案例
# include <stdio.h> # include <stdlib.h> # include <string.h> # include <malloc ...
- c 语言结构体的三种定义方式
struct 结构体名{ 成员列表: ..... }结构体变量: 结构体类型变量的定义 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体 ...
- c中结构体的4种定义
1.常规的标准方式: 1 #include <stdio.h> 2 3 struct student{ 4 int age; 5 float score; 6 ...
- C语言中结构体对齐问题
C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...
- go语言学习-结构体
结构体 go语言中的结构体,是一种复合类型,有一组属性构成,这些属性被称为字段.结构体也是值类型,可以使用new来创建. 定义: type name struct { field1 type1 fie ...
- [日常] Go语言圣经--结构体,JSON习题
Go语言圣经-结构体 1.结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体 2.通常一行对应一个结构体成员,成员的名字在前类型在后,不过如果相邻的成员类型如果相同的话可以被合并到一行 ...
- C语言中结构体赋值问题的讨论
今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...
- ios开发中的C语言学习—— 结构体简介
在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...
- 01.C语言关于结构体的学习笔记
我对于学习的C语言的结构体做一个小的学习总结,总结如下: 结构体:structure 结构体是一种用户自己建立的数据类型,由不同类型数据组成的组合型的数据结构.在其他高级语言中称为记录(record) ...
随机推荐
- Javascript学习--时钟
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 函数式编程--为什么会出现lambda表达式?
java一直处在发张和演化的过程中,其中有2个版本从根本上改变了代码的编写方式.第一个就是JDK5之后增加的泛型,还有一个就是现在介绍的函数式编程,lambda表达式. lambda表达式是java8 ...
- 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(3)-前端实现
转载自:http://www.cnblogs.com/Auyuer/p/8086975.html MoonLight可视化订单需求区域分析系统实现功能: 在现实生活中,计算机和互联网迅速发展,人们越来 ...
- 在Intellij IDEA 中clean报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
解决办法:添加VM属性 -Dmaven.multiModuleProjectDirectory=$M2_HOME
- VAssistX插件
一.什么是VassistX? VassistX的全称是Visual Assist X,是whole tomato开发的一个非常好用的插件,可用于VC6.0及Visual Studio的各个版本(包括V ...
- MySQL刷新事务日志级别设置
标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 # if set to 1 , InnoDB will flush (fsync ...
- tomcat部署最佳实践(一)
Tomcat部署最佳实践 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomc ...
- Node.js调用C#代码
在Node.js的项目中假如我们想去调用已经用C#写的dll库该怎么办呢?在这种情况下Edge.js是一个不错的选择,Edge.js是一款在GitHub上开源的技术,它允许Node.js和.NET c ...
- mysql 我们眼中的int(10)
自我总结,欢迎拍砖! 目的:定义int(3)和int(10)真的有区别吗? 论证: 1.创建student,student2表 分别定义一个student,student2表 create table ...
- char a[]和char *a的比较
指针和数组存在着一些本质的区别.当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作 为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是 ...