我正在阅读一些C代码,其中有些比较难以理解。例如,下面的赋值语句是做什么用的:
MY_TYPE my_var[3]={0};
MY_TYPE
是一种固定点算术类型。我还没有遇到过带有 []
括号的变量和用 {}
分配值的情况。
这似乎太简单了。那么,定义 MY_TYPE
有什么优势呢?
my_type my_var[3]={0};
在此之上:
my_type my_var[3];
我正在阅读一些C代码,其中有些比较难以理解。例如,下面的赋值语句是做什么用的:
MY_TYPE my_var[3]={0};
MY_TYPE
是一种固定点算术类型。我还没有遇到过带有 []
括号的变量和用 {}
分配值的情况。
这似乎太简单了。那么,定义 MY_TYPE
有什么优势呢?
my_type my_var[3]={0};
my_type my_var[3];
这是一个由3个元素组成的数组,初始值均为0。
它创建了一个大小为3的MY_TYPE
类型的数组my_var
,并初始化为0(我猜MY_TYPE
是某种整数类型)。请注意,只需要一个初始化就足以让其余的初始化完成。
另外请注意,如果你将这个数组在全局范围内声明而不是在块内部声明,那么它会自动初始化,这样MY_TYPE my_var[3];
就足够了。
MY_TYPE my_var[3]={0};
将数组my_var
初始化为:
my_var[0] = 0; my_var[1] = 0; my_var[2] = 0;
这是一个由3个元素组成的一维数组,初始值为0。从技术上讲,当您初始化数组中的一个元素时,所有其他元素都会自动初始化为0。
因此,该数组有3个元素和3个索引:
my_var[0]=0;
my_var[1]=0;
my_var[2]=0;
My_TYPE
可以是 int
、char
或任何其他数据类型。
my_var[3]
是一个类型为 MY_TYPE
的变量,它可以存储三个相同类型的值(也称为数组)。
花括号 {}
在这里用作初始化器。 my_var[3] = {0}
将其第一个元素初始化为 0
。其余元素将自动初始化为零。
MY_TYPE my_var[3];
为MY_TYPE
的数据在内存中保留了三个空间。而;
MY_TYPE my_var[3] = {0};
将这三个空间全部初始化为0
。
使用的优点
my_type my_var[3]={0};
结束
my_type my_var[3];
这个语句初始化了数组。如果没有这个初始化器,你的数组将包含垃圾值(之前存储在这些内存位置的任何值)。