数组与容器的区别是,数组的大小确定不变,不能随意增加元素。
声明一个数组:
int arr1[] = {1,2,3};
const int arr2Size = 10;
int arr2[arr2Size];
arr2 = arr1; // 不可以,数组不允许拷贝
char arr3[5] = "hello"; // 不可以,字符串最后会有一个\0空字符
char arr3[6] = "hello";
// 这是含有10个整型指针的数组
int* parray[10];
// 这是一个指针,指向一个含有10个整型的数组
int(*pToArray)[10] = &arr2;
// 这是一个引用,引用一个含有10个整型的数组
int(&pToArray)[10] = arr2;
指针和数组
使用数组类型的对象,其实是使用一个指向该数组首元素的指针,当数组作为一个auto变量的初始值时,得到的类型是指针而非数组。
int arr1[3] = { 1,2,3 };
// 使用数组作为decltype初始值时返回的类型是数组
decltype(arr1) arr2 = { 123, 123 };
// 使用auto时推断得到的类型是指针
auto a(arr1);
int i = 10;
a = &i;
数组的begin和end
C++11为数组引入了begin和end函数,将数组作为参数可以获取指向首元素的指针和指向尾元素下一位置的指针。尾后指针不能进行解引和递增操作。<