码迷,mamicode.com
首页 > 编程语言 > 详细

[C++] 数组

时间:2017-12-14 04:05:38      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:类型   导致   字符数组   未定义   span   引用   函数   ptr   特殊性   

数组

数组是存放类型相同的对象的容器。这些对象本身没有名字,需要通过其所在位置访问。数组的大小确定不变,不能随意向数组中添加元素。

数组是一种复合类型,声明型如a[d],a为数组名,b为数组维度(说明数组中元素的个数)。

数组初始化

默认情况下,数组的元素被默认初始化。在函数内部定义了某种内置类型的数组,那么默认初始化令数组含有未定义的值。在函数体外部定义了某种内置类型的数组,那么默认初始化令数组含有值为0。

显式初始化数组元素

const unsigned sz = 3;
int ia1[sz] = {0, 1, 2};
// sz为常量
int a2[] = {0, 1, 2};
// 数组纬度可以为空。根据数组初始值的个数在编译期间确定数组维度
int a3[5] = {0, 1, 2};
// 等价于a3[] = {0, 1, 2, 0, 0};
string a4[3] = {"Hi", "bye"};
// 等价于a4[] = {"Hi", "bye", ""};
int a5[2] = {0, 1, 2};
// 错误,初始值超过了数组的维度

 字符数组的特殊性

当用字符串字面值对字符数组进行初始化时,一定要注意字符串字面值的结尾处还有一个空字符,这个字符会像字符串的其他自负一样被拷贝到字符数组中。

char a1[] = {C, +, +};
// 列表初始化,没有空字符
char a2[] = {C, +, +, \0};
// 显式空字符
char a3[] = "C++";
// 自动添加表示字符串结尾的空字符
const char a4[6] = "Daniel";
// 错误。因为字符串字面值末尾包含空字符,导致数组空间不够

复杂的数组声明(难点)

int *ptrs[10];
// ptrs是含有10个整型指针的数组
int (*Parray)[10] = &arr;
// Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr;
// arrRef引用一个含有10个整数的数组
int *(&arry)[10] = ptrs;
// arry是数组的引用,该数组含有10个指针

 指针与数组

 

[C++] 数组

标签:类型   导致   字符数组   未定义   span   引用   函数   ptr   特殊性   

原文地址:http://www.cnblogs.com/immjc/p/8035143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!