C++ Primer 学习笔记——数组

与vector相似,但是数组的大小确认不变

定义和初始化内置数组

constexpr unsigned sz=3;
int arr[sz];//sz为数组的维度,必须是常量

int *parr[sz];//3个指向整数的指针
int (*Parray)[3]=&arr;//Parray为指向一个3维数组的指针
int (&Parray)[3]=arr;//Parry为一个3为数组的引用
int *(&Parray)[3]=parrr;//Parray为数组的引用,存有3个指针

int a1[sz]={0,1,2};
int a2[]={0,1,2,2};
int a3[7]={0,1,2,3,4};//等价于{0,1,2,3,4,0,0}
int a[]=a1;//错误,不允许使用一个数组来初始化另个数组

//字符数组
char a1[]={'a','b'};
char a2[]={'a','b','\0'};
char a3[]="C++"//自动添加字符串结束

访问数组元素
下标访问 类型:size_t

for (auto i: scores)
    cout<<i<<" ";//遍历所有元素

指正与数组
数组名也是数组首元素的地址

string nums[]={..};
string *p=nums;

指针也是迭代器

这里写代码片
#include<iostream>
using std::cout;
int main()
{
    int ia[] = { 0, 2, 2, 3, 4 };
    int *p = ia;
    int *p2 = 4 + p;//指正运算
    int last = *(p + 4);
    cout << *p2 << " " << *p << " " << last;
    return 0;
}
//3.36
#include<iostream>
using std::cout;
int main()
{
    int arr1[5] = { 0, 3, 2, 3, 4 };
    int arr2[5] = { 0, 1, 2, 3, 4 };
    int *p1 = arr1;
    int *p2 = arr2;
    bool flag = true;
    for (int i = 0; i < 5; i++)
    {
        if (*(p1 + i) != *(p2 + i))

            flag = false;
    }
    cout << flag;
    return 0;
}

多维数组
实际为数组的数组

#include<iostream>
using std::cout;
int main()
{
    int ia[4][3] = {
        { 1, 2, 3 },
        { 2, 3, 4 },
        { 3, 4, 5 },
        { 4, 5, 7 }
    };
    for (auto &i : ia)//i即为每一行
    {//如果不是引用,i会被初始化为该数组内首元素的地址 int*类型
        for (auto j : i)//j为i中的每个元素
            cout << j;
        cout << std::endl;
    }
    return 0;
}

#include<iostream>
using std::cout;
int main()
{
    int ia[4][3] = {
        { 1, 2, 3 },
        { 2, 3, 4 },
        { 3, 4, 5 },
        { 4, 5, 7 }
    };
    for (auto p = ia; p != ia + 4; p++)
    {
        for(auto q = *p; q != *p + 3; q++)
        {
            cout << *q;
        }
        cout << std::endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值