数组基础知识

1. 一维数组的创建和初始化

数组:数组是一组相同类型元素的集合。
数组的创建方式:

arr[(非零的整数,常量,不能为变量)];

数组的初始化:

int arr1[10] = {1,2,3};
int arr2[] = {1,2,3,4};
int arr3[5] = {12345}char arr4[3] = {'a',98, 'c'};
char arr5[] = {'a','b','c'};
char arr6[] = "abcdef";

在函数内定义的数组在栈上,如果没初始化,则为乱码;
数组不能整体赋值;只能一个个赋值;(数组可以整体初始化,但是不能整体赋值)

int arr[];
int num=sizeof(arr)/sizeof(arr[]);
for(int i=;i<10;i++)
{
    arr[i]=i;
}

2. 一维数组的使用

a:数组是使用下标来访问的,下标是从0开始。
b:数组的大小可以通过计算得到。

3. 一维数组在内存中的存储

a:数组不能单独看待,必须把数组看作整体,开辟空间是数组整体开辟,整体释放。
b:数组在内存中一定是连续存放的(线性存储)。
c:数组地址是由高到低 排布的,arr[0]的地址是其最低地址向上连续读取4个 就能拿到数组中存的内容。(段地址加偏移量)
d:对于数组取地址时,取的是其对应的最低的地址。
e:数组在哪个区域放置取决于数组在哪定义;数组怎么排布取决于其类型,永远是线性存储。

4. 二维数组的创建和初始化

二维数组的创建:
数组的第一个[]中的数字可以省略。

int[][4];

怎样理解二维数组:二维数组可以看作一维数组,只不过其中元素是一维数组。数组也相当于一个类型,相当于数组放数组。多维数组可以将其理解为线性的树状图。
初始化:

int arr[3][4] = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} };
int arr[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int arr[3][4] = { 0 };

5. 数组作为函数参数

a:数组作为函数参数的时候,会发生降维,降维成指向其内部元素(可能是int,double,float,数组,指针)的指针。
b:二维数组降维成一维数组指针
c:指针指向数组的时候,可以有两种方案访问数组;数组本身也有两种访问方式;
d:数组实际进行访问时:
1:采用 [ ] 进行元素缩影 arr[ i ]
2:*(arr+i)
注:对指针+1,其实是加上其所指向类型的大小
数组传参一般而言必须带上数组元素的个数(字符串可以不带,字符串有自然结束位\0)
数组名只有在两种情况下才能代表整个数组:sizeof()中单独使用;在数组名前带&代表整个数组;其他情况全部表示数组首元素的地址。

&arr[0]+1  等价于 arr+1
&arr+1+1代表加上整个数组的大小

注:各位读者阅读完本文,如果对你有所帮助,还请一键三连哦!如果文章有不妥之处,欢迎在下方评论指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值