c++数组

c++数组,第1张

c++数组 一、定义和初始化内置数组

1.不可以使用auto关键字由初始值的列表推断类型

2.数组的元素应为对象,因此不存在引用的数组

3.复杂的数组声明,技巧:从数组的名字开始按照由内向外的顺序阅读

指针:a指向一个含有十个整数的数组

int b[10]={10,20,30};
int(*a)[10] = &b;
cout << *((*a) + 1);    //输出20

引用:a引用一个含有十个整数的数组

int b[10]={10,20,30};
int(&a)[10] = b;
cout << a[1];

4.不存在引用的数组

int& a[10] = b;
二、访问数组元素

1.数组元素也可以使用范围for语句来访问

2.数组下标通常定义为size_t类型,这是一种机器相关的无符号类型,在头文件 cstddef 定义

三、指针和数组

1.指针也是迭代器,可以拥有和迭代器一样的 *** 作。c++11引入了begin和end函数,end函数指向尾元素的下一位置,这两个函数定义在iterator头文件内,使用如下:

int a[3] = { 10,20,30 };
int* l = begin(a);
int* r = end(a);

2.和迭代器一样,两个指针相减的结果是距离,类型是ptrdiff_t与size_t类似,在头文件cstddef内,是一种带符号类型

3.负数下标,内置的下标运算符所用的索引值不是无符号型,标准库类型限定使用的下标必须是无符号型

int a[3] = { 10,20,30 };
int* p =& a[2];
int ee = p[-2];    //即a[0]
四、与旧代码的接口

1.允许使用以空字符结束的字符数组(c风格)来初始化、赋值string对象

char s1[10] = "abcdef";
string s2 = s1;

2.string对象的加法运算(复合赋值运算)中允许以空字符结束的字符数组(c风格)作为其中一个运算对象

3.string提供一个名为c_str的成员函数,返回值是一个c风格的字符串,也就是返回一个指针,指向空字符结束的字符数组,指针类型是const char*

string s1("abcdef");
const char* str = s1.c_str();

4.允许使用数组来初始化vector对象,只需指明拷贝区域的首元素地址和尾后地址

int a[] = { 0,1,2,3,4,5 };
vectorv1(begin(a), end(a));
vectorv2(a, a + 6);

5.尽量使用标准库类型而非数组

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5714905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存