摘要:本文主要向大家介绍了C/C++知识点之数组,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之数组,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
存放相同的类型,大小声明后不可改变,性能上优于vector。
数组声明
a[d]; // a是名称。d是维度,也就是数组大小,必须是常量表达式
数组的元素会被默认初始化
数组的元素为对象,所以与vector相同,不存在以引用为元素的情况。
数组的显示初始化
const unsigned sz = 3; // 用来定义数组的维度,必须是常量
int ial[sz] = {0,1,2}; // 含有3个元素的数组,元素值分别时0,1,2
int a2[] = {0,1,2}; // 维度是3的数组
int a3[5] = {0,1,2};// 等价于 a3[] = {0,1,2,0,0}
string a4[3] = {"hi", "bye"};// 等价于 string a4[] = {"hi", "bye", ""}
// int a5[2] = {0,1,2};// 错误 初始值太多
字符数组应该具有零结尾
char c1[] = {'C', '+', '+'}; // 列表初始化,没有空字符,虽然编译器不会报错,但是直接当作字符串使用会有问题
char c2[] = {'C', '+', '+','\0'}; // 列表初始化,含有显示的空字符
char c3[] = "C++"; // 自动添加表示字符串结束的空字符
//const char a4[6] = "Daniel"; // 错误:没有空间放空字符,实际长度应该是7
数组间是不允许使用“=”进行拷贝和赋值的。
一些复杂的指针,指针的数组,数组的指针,数组的引用
int *ptrs[10]; // ptrs是含有10个整形指针的数组
//int &refs[10] ; // 错误 不存在引用的数组
int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组
访问数组元素
数组的索引从零开始,如果一个数组包含10个元素,那么索引就是0-9.
数组的索引类型是size_t, 这是一个机器相关的无符号类型
索引值的合理范围必须由程序员来保证,这也是很多错误产生的原因
数组和指针
编译器会将数组的名字替换成数组首元素的指针
指针就是数组的迭代器。
inr arr[] = {0,1,2,3,4,5,6,7,8,9};
int *ptrs[10]; // ptrs是含有10个整形指针的数组
//int &refs[10] ; // 错误 不存在引用的数组
int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组
int *p = arr; // 数组名称是首元素指针
++p; // p指向arr[1], 数组的第二个元素。
int *e = &arr[10]; // 数组arr的末尾元素的下一个元素地址
for(int *b = arr; b != e; ++b)
{
cout << *b << endl; //输出arr的所有元素
}
// 通过标准库函数来获得首尾地址用来遍历整个数组
//int *pbeg = begin(arr);
int *pend = end(arr);
for(int *pbeg = begin(arr); pbeg != pend; ++pbeg)
{
cout << *pbeg << endl; //输出arr的所有元素
}
指针的运算
int *ip = arr;
int *ip3 = ip + 3; // 指针可以加减一个整数,意义是对指针进行数组内移动,+为向后,-为向前,移动的数量为运算符号后的数量。
auto n = ip3 - ip; // 两个指针相减,所得的类型是prtdiff_t,一个带符号类型。得数是两个原素间的位置差值。
本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号