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

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中有相同的全局变量定义,且没有初始化,编译器会认为第二个是声明而不是定义。)

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

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/LJWJL/p/6388860.html

C语言结构体初始化(转载)相关推荐

  1. c语言 结构体 初始化,C语言结构体初始化

    C语言结构体初始化教程 在 C语言结构体初始化 语法 struct structName varName = {fileldValue1, fileldValue2, fileldValue3}; 参 ...

  2. C语言结构体初始化的几种方法

    一.介绍 结构体作为数据结构的基础,经常使用,其中初始化也有几种方法,这里详细介绍 二.常规初始化(先定义再初始化) typedef struct {int bandrate;int databits ...

  3. C语言结构体初始化的四种方法

    定义 struct InitMember {int first:double second:char* third:float four; }; 方法一:定义时赋值 struct InitMember ...

  4. c++语言 结构体初始化,结构体变量初始化

    数组的初始化,需要通过一常量数据列表,对其数组元素分别进行初始化,形式如下: 数据类型 数组名称[数组长度]={初始化值1,初始化值2,-, 初始化值n}; 例如,定义长度为5的整型数组,并对其初始化 ...

  5. C语言--结构体初始化

    一.结构体基本初始化方法 定义 struct Mystruct {int first;double second;char* third;float four;}; 1.方法一:定义时赋值 赋值时注意 ...

  6. linux c语言结构体初始化,Linux c中 结构体初始化方式

    某日在看Linux底层驱动的介绍时,发现在Linux C中结构体的有多种初始化方式,这激起了我的好奇心,亲自实践,今日便来总结一下. 首先定义一个结构体:struct test{ int a; cha ...

  7. linux下C结构体初始化

    引子 在看Linux netlink部分的时候看到了这样的写法 struct netlink_kernel_cfg cfg = {.groups = RTNLGRP_MAX,.input = rtne ...

  8. c++ 结构体初始化_【干货】c语言基础语法——结构体

    1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院​www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...

  9. c语言字符结构数组初始化,C语言结构体数组初始化问题

    C语言结构体数组指定初始化器时,下面的三种方法,只有第三种可以,但是第一,二种,我看不出语法上哪错了,编译器DEVc++会报错 [Error] C99 designator 'num_insur' o ...

  10. c语言+结构体指针初始化,c语言结构体指针初始化===

    c语言结构体指针初始化 今天来讨论一下C中的内存管理. 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以 ...

最新文章

  1. PowerBuilder 11.x 的重要进步和不足
  2. 公司成立两周年感言_对我的副项目成立一周年的一些反思
  3. linux程序实例获取,Linux命令备忘实例(4)——获取内容
  4. url上接收到 el表达式 不渲染_一文摸透从输入URL到页面渲染的过程
  5. java android长连接_基于Java Socket的自定义协议,实现Android与服务器的长连接(一)...
  6. 云服务器与传统服务器的优劣对比_为什么选择海外云服务器和香港云服务器
  7. php常用加密函数总结
  8. vue实现上传图片并预览效果 html+css+js
  9. xshell和xftp官网
  10. css音乐播放器插件,jQuery MPlayer音乐播放器插件
  11. python条形堆积图_python – 带有中心标签的堆积条形图
  12. 云服务器发现安全漏洞怎么解决?
  13. 热烈祝贺方正璞华两款产品入选2021年度江苏省工业软件优秀产品和应用解决方案拟推广名单
  14. css 固定定位失效问题 position: fixed
  15. 数据挖掘场景-发票虚开
  16. guzzlehttp resulted in a `409 Conflict` response 访问网址 laravel thinkphp
  17. 微信小程序毕业设计——社区老人互助管理平台
  18. 图像基本操作——图像边界填充和图像融合
  19. C3D复现出现的问题及其解决方法
  20. -Dmaven.multiModuleProjectDirectory system propert

热门文章

  1. 如何在 Mac 上查找已保存的密码?
  2. iOS开发之Swift 4 JSON 解析指南
  3. RPN Calculator for mac(RPN计算器)
  4. Joyoshare UltFix快速修复iPhone黑屏死机的问题
  5. Idea 中的快捷键(mac)
  6. 常见异常与错误 翻译
  7. 《精通ArcGIS Server 应用与开发》——2.4 ArcGIS Server的安装与配置
  8. jQuery构造函数init参数分析(三)
  9. Enum定义位域, 即可以通过位操作来产生未命名的值
  10. 利用flashback database实现部分对象回滚