C++ 数组



//数组的维度必须是一个常量表达式
//定义数组的时候必须指定数组的类型,不允许使用auto关键字推断列表类型
//使用字符串声明字符数组时,数组的长度要比字符串的字符数多1,因为末尾有个空字符
//不能将数组的内容拷贝给其他数组作为初始值,也不能用数组和vector为其他数组赋值(数组需要显式初始化)
//数组可以存放大多数类型的对象,数组本身就是对象,所以可以定义数组的指针和数组的引用
//int *ptr[10];存放指针的数组
//int (*Parray)[10] = &arr;数组的指针,Parray指向一个存放10个元素的数组
//int (&arrRef)[10] = arr;数组的引用
//因为引用不是对象,因此,不能定义引用的数组,数组中方的是引用
//要理解数组声明的含义,最好的办法是从数组的名字开始按照由内向外的顺序阅读。
//数组的访问也能使用范围for或下标的形式。
//在使用数组下标时,通常将其定义为size_t类型
//取地址符可以用于任何对象,数组也是对象
//在大多数表达式中,使用数组类型的对象其实是使用一个指向该数组首元素的指针,因此一些情况下,
//数组的操作实际上是指针的操作。使用auto 作为一个数组类型的初始值时得到的是一个指针类型,decltype不变仍是数组
//有时候需要获取指针尾元素的下一个地址,但是经常会出错,因此C++11引入了begin和end函数,但数组不是类类型
//所以在使用begin和end时,将数组名作为其参数即可。从而获得数组首元素的指针和数组尾元素下一个位置的指针
//尾后指针不能执行解引用和递增操作
//指向数组元素的指针可以执行解引用、递增、比较、与整数相加、两个指针相减
//和迭代器一样,两个指针相减的结果是他们之间的距离。参与运算的两个指针必须指向同一个数组当中的元素
//标准库类型(string,vector...)限定使用的下标必须是无符号类型,而内置下标运算无此要求,下标可以为负(回退)
//将字符数组给字符串函数(strlen、strcmp等)赋值时需要注意,字符串数组中必须要有'\0'作为结尾
//使用数组初始化vector对象int int_arr[]={0,1,2,3};vector<int> vec(begin(int_arr),end(int_arr))
//多维数组,对于二维数组,第一个维度是行,第二个维度是列 
//要使用范围for语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型
//当程序使用多维数组时,也会自动将其转换为指向数组首元素的指针
//有多维数组名转换而来的指针实际是指向第一个内层数组的指针
#include<iostream>
using namespace std;
int main(){
    int arr[10];
    int c = 0;
    for (auto &i : arr)
    {
        i = c;
        c += 1;
    }
    for (int j = 0; j < 10; j++)
        cout << arr[j]<<" ";
    cout << endl;
    //利用指针将数组置零
    int *ptr;
    ptr = begin(arr);
    while(ptr != end(arr))
   {
        *ptr = 0;
        ptr++;
   }
   //或者使用范围for
   for (auto val : arr)
       cout << val << " ";
   cout << endl;
   return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值