一、定义
数组的维数必须用大于等于1的常量表达式来定义
整形字面值常量、枚举常量或者常量表达式初始化的整形const对象;
二、初始化
1、显示初始化数组元素
*在函数体外定义的内置数组,其元素均初始化为0;
*在函数体内定义的内置数组,其元素无初始化;
*不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始;如果该类没有默认构造函数,则必须为该数组的元素提供显示初始化
2、特殊的字符数组
3、不允许数组直接复制和赋值
// SHUZU.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <string> using std::string; int get_size() { static int i = 0; i = i + 1; return i; } class testClass { public: protected: private: int a; char* p; }; int atest[10]; testClass atc[10]; int _tmain(int argc, _TCHAR* argv[]) { const unsigned buf_size = 512, max_files = 20; int staff_size = 27; const unsigned sz = get_size();//sz是const对象,但是他的值要多运行时调用get_size才能知道 char input_buffer[buf_size];//buf_size是const常量 string fileTable[max_files + 1];//ok max_files是const常量,max_files + 1在编译时候就能算出是21 // double salaries[staff_size];//error non const variable // int test_scores[get_size()];//error not const expression // int vals[sz];//error size not known until run time //显示初始化数组元素 int btest[10]; testClass btc[10]; //特殊的字符数组 char ca1[] = {‘c‘, ‘+‘, ‘+‘};//3维 char ca2[] = {‘c‘,‘+‘,‘+‘, ‘\0‘};//4维 char ca3[] = "c++";//4维 null terminator added automatically //不允许数组直接复制和赋值 int ia[] = {0, 1, 2}; //int ia2[](ia); //error int ia3[]; //ia3 = ia; //error return 0; }
时间: 2024-10-28 14:37:23