理解C++复杂数组

本文详细介绍了C++中的静态和动态数组,包括指针数组、数组指针、多维数组引用和别名等概念,并探讨了指针与引用的区别,以及在函数参数传递中的行为。特别强调了数组不可拷贝,传递时需通过指针或引用实现。
摘要由CSDN通过智能技术生成

带括号的和不带括号的变量阅读顺序:

       带括号:由括号内向外理解

       不带括号:由右向左理解

一、静态数组 

1、指针数组:数组内存储的是指针

定义:定义即分配空间,基本数据变量和指针皆准

int * point[constant];      //constant必须在编译阶段指定

初始化:需要给每个元素赋地址值

for(int i=0;i<constant;i++)
 {

     point[i] = &i;
}  

 2、数组指针:指向数组的指针,数组内存储的是基本数据类型

定义:

 int(*point)[constant];    //实际上指向的是二维数组(可以用于以为数组),数组内存中一片连续的存储单元

初始化:

 int temp[constant] = {10};

point = &temp;    //将数组地址赋给指针变量,一维数组需要加取地址符

cout<< *(*(point + 0) +constant);    //*(point + 0)取第0行的地址

cout<< point[0][0];                   //输出数值一致

cout<< (*point)[0];       //输出数值一致,[]的优先级比*的优先级高,所以*point[0]会取首元素地址然后解引用

                         // *point[1]会跳过数组constant偏移量,取constant地址处的元素再解引用

注意:

           &temp = temp均是指数组的首地址,temp并不是一个存储地址的变量,它代表整个数组,只是数值上等于数组地址。

3、指针数组的指针:指向数组的指针,数组内存储的是指向基本数据类型的指针

定义:

int *(*point)[constant];    //point是指针,指向数组内含有constant个int *型数据的数组

初始化:    

 int *temp[constant];
for(int i=0;i<constant;i++)
{
    temp[i]= & constant;
}

point = &temp;     //一维数组加上取地址符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值