首页 > 编程知识 正文

一维数组的定义方式,定义数组并初始化

时间:2023-05-05 11:40:38 阅读:163411 作者:2006

数组是常用的内置复杂类型,但并不是每个人都熟悉数组的独特特性。 讨论数组的定义和初始化的一些特性。

定义数组

通常,要定义数组,只需编写数组类型、数组名称和数组大小。 这是每个写程序的人都知道的。 请注意,数组的大小不一定必须是整数文字。 可以在方括号中使用const变量常量表达式枚举

const unsigned buf_size=512; enum SizeType{zero,one,two,three,four}; enum SizeType size=three; int data[buf_size]; //const变量int data2[3 5]; //常数表达式int data3[buf_size 1]; 包含const变量的常量表达式int data4[size]; //包括枚举

初始化数组

数组初始化是一个经常被忽视的问题,但在实际编程中,数组初始化引起的错误很常见,很难发现。 因此,深入掌握数组初始化的细节有助于编程能力和调试能力的提高。

如果数组未显式初始化,也就是说,如果在定义数组时赋值,则定义的数组将满足以下三个规则:

如果定义函数外部的数组,并且数组类型为内置类型,则该数组将自动初始化为0。

如果数组是在函数中定义的数组,并且数组类型为内置类型,则未初始化数组也会导致错误。

无论数组的定义位置如何,如果数组类型是自定义类,则数组将使用默认构造函数进行初始化。

测试

接下来,我们将对以上三个规则逐一测试验证。

规则1:

如上所述,将数组定义在主函数之外,然后直接在主函数中引用该数组,而不赋值。 编写类似以下内容的测试代码

#include stdio.hint data[10]; int main () for ) intI=0; i10; I ) printf('%d ',data[i]; 返回0; }

结果:

根据执行结果,将数组定义在主函数之外时,数组会自动初始化为0。 如果定义的数组希望初始化为零,则在函数外部定义的数组可以不初始化。

规则2:

将数组定义移动到主函数内,初始化而不显示。 代码如下所示

# include stdio.hint main ((int data [ 10 ]; for(intI=0; i10; I ) printf('%d ',data[i]; 返回0; }

结果:

根据程序的执行结果,将数组定义到函数主体内部,并且不进行显示的初始化,数组就不会被初始化。 此时,数组元素的值是没有意义的垃圾值。 这种未初始化的数组经常会导致致命的错误。

规则3:

上面的两个示例是您的系统中的内置类型。 接下来,定义类并测试数组类型是否为自定义类型。

首先,定义MyClass类,并将每个类放在函数外部和函数体内部,然后观察程序的输出。

# include stdio.hclass myclass { intx; public:MyClass () printf (n将调用默认构造函数); this-x=3; }; MyClass outside[1]; int main () {MyClass inside[1]; 返回0; }

结果:

从执行结果来看,如果初始化数组而不显示数组,则无论数组定义在哪里,都会使用缺省构造函数初始化该数组。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。