您的位置  > 互联网

(单机)数组初始化定义及动态数组

C++ 数组初始化

定义:

int *pia = 新 int[10]; // 10 个整数的数组

这个新表达式分配一个包含 10 个 int 元素的数组,并返回指向该数组第一个元素的指针。 该返回值初始化指针 pia。

在空闲存储中创建的数组对象没有名称,堆中的对象只能通过其地址间接访问。

注意:C++ 使用 new 并释放堆上的动态数组(空闲存储区域)。

动态数组初始化:

1. 元素只能初始化为元素类型的默认值。 与数组变量一样,初始化列表不能用于为数组元素提供不同的初始值。

2、对于内置数据类型元素的数组,必须使用()来显示指定程序执行初始化操作,否则程序将不执行初始化操作:

int *pia = 新 int[10]; // 每个元素都没有初始化

int *pia2 = new int[10] (); // 每个元素都初始化为0

3、对于class类型元素的数组,无论是否使用(),都会自动调用其默认构造函数进行初始化:

*PSA=新[10]; // 每个元素调用默认构造函数进行初始化

*psa = 新[10](); // 每个元素调用默认构造函数进行初始化

动态分配一个空数组:

char *cp = 新的 char[0];

之后,cp的维数可以动态改变。

动态发布:

[] 皮娅;

典型用法示例:

const char *pc = "很长"; // 处理 C 风格字符串时使用 const 指针

const len ​= (pc) +1;//用于数组的大小和下标

for ( ix = 0; ix != ; ++ix) {

char *pc2 = 新的 char[len]; // pc2指向的存储空间的内容会动态变化,所以不使用const

(pc2、pc、len); // 使用比使用更安全

//做;

[] 电脑2;

数组定义和初始化

一维数组初始化:

标准方法一:int value[100]; //value[i]的值不确定,未初始化。

标准方法二:int value[100] = {1,2}; //value[0]和value[1]的值分别为1和2,未定义的value[i>1]初始化为0

指针方式:int* value = new int[n]; // 未初始化

[]价值; // 一定不要忘记删除数组空间

二维数组初始化:

标准方法一:int value[9][9]; // value[i][j]的值不确定,未初始化。

标准方法二:int value[9][9] = { {1,1},{2}}; //value[0][0,1]和value[1][0]初始化,其他初始化。 是 0

指针方法一:int(*value)[n] = new int[m][n];

[]价值; // n 必须是常量,调用直观。

指针方法二:int** value = new int* [m];

for(i) value[i] = new int[n];

for(i) []值[i];

[]价值; // 多个析构函数、存储问题、未初始化

指针方法三:int * value = new int[3][4]; // 数组按行存储

[]价值; // 内存必须释放,否则会造成内存泄漏

多维数组初始化:

指针方式:int * value = new int[m][3][4]; // 只有第一个维度可以是变量,其他维度必须是常量,否则会报错

[]价值; // 内存必须释放,否则会造成内存泄漏

添加 ”;” 在数组初始化的大括号之后表示结束。

数组访问:

指针形式:如访问二维数组value[i][j]:

*(值[i] + j) 或 (*(值 + i))[j]

数组作为参数传递

一维数组参数传递:

无效函数(int *值);

或者

void Func(int value[]);

二维数组传输:

定义为int **值的传递;

void Func(int **值);

定义为 int (*value)[n] = new int[m][n] 的传递;

无效函数(int(*值)[n]); // (p)=4,(*值)=(int)*n;

数组与指针的关系 数组的存储格式

当多维数组存储在内存中时,它们以最低维的连续格式存储。 比如二维数组{{1,2},{3,4}}在内存中的位置是这样的顺序:“1,3,2,4”,这个和那个不同,它存储在列。 使用指针索引时很有用。

字符数组

char类型的数组称为字符数组,通常用于存储字符串。 字符串是附加特殊字符(字符串结束标志)的字符序列。 字符串终止符表示字符串已经结束。 该字符由转义序列“\0”定义。 有时也称为空字符,占用一个字节,其中8位全为零。 这种形式的字符串通常被称为C类型字符串,因为这种方式定义字符串是C语言中引入的,一般用在C++中,而类是在MFC中定义的。

字符串中的每个字符占用一个字节,算上最后一个空字符,字符串比它包含的字符多一个字节。 喜欢:

字符[15] =“”;

这里的字符串是14个字符,但是需要定义一个15个字符串的数组。 也可以不指定字符数组的数量。 喜欢:

字符[]=“”;

内存泄漏

我们定义一个指针,然后给它分配一个地址值,然后不再使用它,但是不行,那么当其他地址值分配给该指针时,原来的内存不会被释放,这就是所谓的内存泄漏。