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) ...
随机推荐
- mysql中能够使用索引的典型场景
mysql 演示数据库:http://downloads.mysql.com/docs/sakila-db.zip 匹配全值 explain select * from rental where re ...
- junit4X系列--Rule
原文出处:http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html.感谢作者的无私分享. 初次用文字的方式记录读源码的过程,不知道怎么 ...
- jdk源码->集合->ArrayList
类的属性 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomA ...
- 【转】linux grep命令
1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 2.格式 grep [options] 3.主要参数 [options]主要参数: - ...
- 理解js中的作用域,作用域链以及闭包
作用域变量作用域的类型:全局变量和局部变量全局作用域对于最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的 <script> var outerVar = " ...
- HTTP就是这么简单
为什么要学HTTP? 我们绝大多数的Web应用都是基于HTTP来进行开发的.我们对Web的操作都是通过HTTP协议来进行传输数据的. 简单来说,HTTP协议就是客户端和服务器交互的一种通迅的格式. H ...
- 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 觉得有用的话,欢迎一起讨论相互学习~Follow Me 今 ...
- centos yum方式安装net-snmp v3
SNMPv3的安全报头采用用户安全模式(USM),其提供具有机密性和完整性的网络管理通信.机密性通过采用数据加密标准(DES)来提供.尽管 这一算法以脆弱性著称(由于它采用的是40位的密钥),但与明文 ...
- Golang时间格式化
PHP中格式化时间很方便,只需要一个函数就搞定: date("Y-m-d H:i:s") 而在Golang中,用的是"2006-01-02 15:04:05"这 ...
- ABP官方文档翻译 6.1.1 MVC控制器
ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...