c++数组的基础知识

定义和初始化数组


int a[5];                //定义数组是基本形式
int a[]={1,2,3};        //可以在定义时,直接初始化
int a[5]={1,2,3}        //定义时初始化数组,如果指定了数组大小,那么提供初始化的元素的个数只可以比数组指定的个数少,本可以多,没有初始化的位置,会默认初始化,

对于字符数组,我们要记住一定要留一个位置存放结束符‘\0’,而且数组是不允许拷贝赋值的。数组的元素应为对象,因此不存在引用的数组

理解复杂的数组声明


  1. 数组的指针或数组的引用
  2. 存放指针的数组,没有存放引用的数组
#include<iostream>
using namespace std;
int main()
{
    int num[5] = { 1,2,3,4,5 };
    int(*num_pointer)[5] = &num;        // 数组的指针   
    /*
    num_pointer  ⇒ &num 表示一个数组的首地址, 步长为一个整个数组大小  
    *num_pointer => num  表示数组第一个元素地址, 步长为一个数组元素的大小。
    **/
    cout << "num的值:" << num<<endl;
    cout << "&num的值:"<<&num << endl;
    cout << num_pointer << "   " << *num_pointer << endl;
    cout << **num_pointer << "   " << *((*num_pointer) + 1) << endl;

    int (&num_quote)[5] = num;            //数组的引用
    cout << num_quote[0] << endl;

    char* str[2] = {"Hello", "world"};     // 存放指针的数组
    cout << str[0] << endl;
    system("pause");
    return 0;
}

输出结果:
这里写图片描述

指针和数组


使用数组的时候,编译器一般会把它转换成为指针。在一些情况下对数组的操作,其实就是对指针的操作。

int num[5] = { 1,2,3,4,5 };
auto num1 = num;             //num存放的是数组的第一个元素的地址,所以num1的类型是一个指针
cout << "num1的类型是:" << typeid(num1).name() << endl;

输出结果:
这里写图片描述

数组地址获取


  1. begin函数获取数组的首地址
  2. end函数获取数组尾元素的下一个地址

下标和指针

内置的下标运算符所用的索引值是有符号数, 这一点和vector 和 string 不一样。下标和指针关系如下:

a[i] == > *(a + i)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>