当前位置: 首页 > news >正文

浅谈C语言中结构体的初始化

《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。


1、初始化

typedef struct _TEST_T {
        int i;
        char c[10];
}TEST_T;

TEST_T gst  = {1, “12345”};//可以初始化,设置i为1,s为一个字符串.

TEST_T gst  = {1};//初始化个数少于实际个数时,只初始化前面的成员。

TEST_Tgst  = {.c=“12345”};//有选择的初始化成员。



2、复合字面量。

gst = (TEST_T){122, "1256"};//这是一个赋值语句,也可以作为初始化。可以出现在程序的任何地方。



当然也可以使用复合字面量来初始化:

gst = (TEST_T){.i=122, .c="123"};



3、结构体数组

可以用多个大括号括起来:

TEST_T gst[10] = {{},{},{},{}}

也可以初始化其中的一个元素:

TEST_T gst[10] = {[2]={}, [3]={}}

也可以使用复合字面量:

TEST_T gst[10] = {[2].i=0, [3].i={}}



为什么要初始化:

1、对局部变量初始化可以防止随机值产生的危害。

2、对全局变量初始化可以告诉编译器,这是一个定义,而不是一个声明。(如果两个c中有相同的全局变量定义,且没有初始化,编译器会认为第二个是声明而不是定义。)

转载于:https://www.cnblogs.com/alan666/p/8312286.html

相关文章:

  • Spring AOP中的JDK和CGLib动态代理哪个效率更高?
  • 2016百度之星 - 初赛(Astar Round2A)
  • 为什么需要分布式配置中心?
  • 线上出故障了!我慌得一匹!教大家如何应对在线故障!
  • mysql远程访问cannot connect(10038) 问题解决的过程
  • Spring Cloud技术栈还没有学完!Hystrix又双叒叕停止更新了!
  • 2018年博客之星评选,需要您宝贵的一票!非常感谢!
  • 用私有构造器或者枚举类型强化Singleton 属性
  • 阿里分布式事务框架GTS(Seata)开源啦!
  • 完了!生产事故!几百万消息在消息队列里积压了几个小时!
  • [原创]java WEB学习笔记18:java EE 中的MVC 设计模式(理论)
  • 阿里巴巴的26款超神Java开源项目!
  • window下使用vnc远程登录阿里云ECS/ubuntu图形界面
  • 看似简单的hashCode和equals面试题,竟然有这么多坑!
  • 2019年互联网高频Java面试题指南!互联网升职加薪方案!
  • [nginx文档翻译系列] 控制nginx
  • Debian下无root权限使用Python访问Oracle
  • Js基础知识(一) - 变量
  • k个最大的数及变种小结
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP 小技巧
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Sass Day-01
  • scala基础语法(二)
  • Spring核心 Bean的高级装配
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 前端技术周刊 2019-02-11 Serverless
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用parted解决大于2T的磁盘分区
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 一、python与pycharm的安装
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 原生 js 实现移动端 Touch 滑动反弹
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​人工智能书单(数学基础篇)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #LLM入门|Prompt#3.3_存储_Memory
  • #stm32整理(一)flash读写
  • (12)目标检测_SSD基于pytorch搭建代码
  • (16)Reactor的测试——响应式Spring的道法术器
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (9)STL算法之逆转旋转
  • (Forward) Music Player: From UI Proposal to Code
  • (安卓)跳转应用市场APP详情页的方式
  • (汇总)os模块以及shutil模块对文件的操作
  • (区间dp) (经典例题) 石子合并
  • (转)大型网站的系统架构
  • (转载)利用webkit抓取动态网页和链接
  • (状压dp)uva 10817 Headmaster's Headache
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .gitignore文件_Git:.gitignore
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划