C语言03、数组

数组

数组有多种,有一维数组、二维数组、三维数组......

注意:数组是通过下标来访问的,下标是从0开始的

           数组的大小可以通过计算得到(sizeof)

一维数组

一维数组的创建和初始化

#define M 25

int arr1[10];//对

int arr2[];//错

int arr3[] = {0 ,1 ,2 ,3};//对
此时会自动计算数组大小,此时数组大小为4

int arr4[M];//对

int arr5[1] = { 0 ,1 ,2 ,3 };//错,越界

int arr6[10] = { 0 };//对
此时该数组全部被初始化为0

数组的创建,在C99标准之前,[]中要给一个常量才可以,不能使用变量,C99标准支持了变长数组的概念,也就是说C99标准后可以这样

int num = 10;

int arr[num] = { 0 };

数组初始化时,要注意char类型的数组初始化

char arr1[] = "abc";

char arr2[3] = {'a', 'b', 'c' };

如上代码,若此时以字符串打印arr2,会打印出乱码,因为字符串的结束标志是'\0',而arr2中三个元素均被初始化,该数组没有'\0',打印arr2时没有扫描到'\0',所以会打印出乱码

一维数组在内存中的存储

随着数组下标的增长,数组在内存中是连续存放的,并且是由低地址到高地址

二维数组

二维数组的创建和初始化

int arr1[3][4];//对

int arr2[3][4] = { {1,2,3,4} , {1,2}};//对

int arr3[][4] = { 0 };//对

int arr4[3][] = { 0 };//错

二维数组的第一个[]里代表的是行,第二个[]代表的是列,在初始化二维数组时,第一个[]里的数字可以省略,第二个不可以省略。

二维数组在内存中的存储

与一维数组一样,只是它是一行一行存储的

数组越界

要注意数组越界的问题,有些越界编译器是不会报错的

数组作为函数参数

数组作为函数传参时,并不是把整个数组传了过去,而是只传过去了数组的首元素地址,只是一个地址

数组名是什么(重要)

一般来说,数组名代表的是首元素地址

有两种特殊情况代表的是整个数组:

        1.sizeof(数组名),此时计算出来的是整个数组的大小。

        2.&数组名,取出的是整个数组的地址。若用&arr+1,会发现同一标号元素的地址之间差了整个数组的大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

列宁格勒的街头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值