C++数组阶段总结

数组的学习告一段落,但正所谓温故而知新,阶段性总结对巩固记忆及加深掌握很有帮助,所以还是要总结一波数组的要点。

首先数组的特性是内存连续,类型相同,它的类型基本涵盖c++大部分类型,其数组名既是内存首地址又是数组标识符,而长度表达式要求是常量,这在形参作表达式时很关键。

int arr[1];

数组的访问可通过下标形式与指针形式进行,数组名可作为常指针使用,由于数组名是内存首地址,对元素的访问可以通过*(数组名+下标)获取

Cout<<arr<<endl;

在这里插入图片描述

指针数组的数组名则是个二级指针,元素是指针,而指向数组的指针数组内的元素则是指向数组的指针,这时数组名与指针的区别就出来了

int * arr1[1] ={ arr };

int(*arr2[1])[1]= { &arr };

在这里插入图片描述

二维数组名是指向数组的指针数组,与指向数组的指针数组的概念相似, 但指向数组的指针数组的数组名为指向数组的二级指针,而二维数组名是指向数组的指针。

int arr3[1][1];

int(*arr2[1])[1] = {arr3 };

int(**arr4[1])[1]= { arr2 };

这点在作为函数传递与动态创建二维数组时很容易看出来:

int **p = new int *[a];

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

    p[i] = new int[a];

}

printf1(p, a);

void printf1(int**, int);

数组作为参数传递时形参接受的形式为声明一个数组,用数组名接收实参,而实际接受的值为地址,其作用方式同指针。

int  a [ 4 ] ={ 1, 2, 3, 4 } ;

test(a,a);

void test ( int a[] ,  int*b )
{ 
 cout << "sizeof ( a )  = " << sizeof ( a )<< endl ;
    cout<< "sizeof  ( b ) = "<< sizeof ( b ) << endl ;	
}

在这里插入图片描述

而数组作为参数的方式与变量相同,数组名传递地址作为参数,也可以直接通过arr[]的方式进行传递。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值