理解C语言中的语句

4

我正在阅读一些C代码,其中有些比较难以理解。例如,下面的赋值语句是做什么用的:

MY_TYPE my_var[3]={0};

MY_TYPE 是一种固定点算术类型。我还没有遇到过带有 [] 括号的变量和用 {} 分配值的情况。

这似乎太简单了。那么,定义 MY_TYPE 有什么优势呢?

my_type my_var[3]={0};

在此之上:
my_type my_var[3];
6个回答

4

这是一个由3个元素组成的数组,初始值均为0。


4

它创建了一个大小为3的MY_TYPE类型的数组my_var,并初始化为0(我猜MY_TYPE是某种整数类型)。请注意,只需要一个初始化就足以让其余的初始化完成。

另外请注意,如果你将这个数组在全局范围内声明而不是在块内部声明,那么它会自动初始化,这样MY_TYPE my_var[3];就足够了。


1
我已经删除了我的回答...你说的是正确的...有一点微妙之处我不知道,谢谢你纠正我。我认为这将是你在这里回答中不错的补充... - Jimbo

2

MY_TYPE my_var[3]={0};将数组my_var初始化为:

my_var[0] = 0; my_var[1] = 0; my_var[2] = 0;


2

这是一个由3个元素组成的一维数组,初始值为0。从技术上讲,当您初始化数组中的一个元素时,所有其他元素都会自动初始化为0。

因此,该数组有3个元素和3个索引:

my_var[0]=0;
my_var[1]=0;
my_var[2]=0;

My_TYPE 可以是 intchar 或任何其他数据类型。

在这里更多地了解数组:http://www.cplusplus.com/doc/tutorial/arrays/


1

my_var[3] 是一个类型为 MY_TYPE 的变量,它可以存储三个相同类型的值(也称为数组)。 花括号 {} 在这里用作初始化器my_var[3] = {0} 将其第一个元素初始化为 0。其余元素将自动初始化为零。

 MY_TYPE  my_var[3]; 

MY_TYPE的数据在内存中保留了三个空间。而;

 MY_TYPE  my_var[3] = {0};

将这三个空间全部初始化为0


1

使用的优点

my_type my_var[3]={0};

结束

my_type my_var[3];

这个语句初始化了数组。如果没有这个初始化器,你的数组将包含垃圾值(之前存储在这些内存位置的任何值)。


1
如果没有初始化程序,你的数组将包含垃圾值 - 除非它是全局声明的。 - Nobilis
没问题,当涉及到默认初始化和非默认初始化时,情况可能会有些棘手。 - Nobilis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接