C/C++知识点之数组
小标 2018-08-10 来源 : 阅读 1589 评论 0

摘要:本文主要向大家介绍了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+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程