0
点赞
收藏
分享

微信扫一扫

C语言学习记录13(数组)

数组

数组:即存储相同数据类型的集合我们称之为​数组

对于数我们因该掌握以下内容

C语言学习记录13(数组)_数组

数组分为一维数组、二维数组、三维数组……

本片着重于一维数组于二维数组

一维数组

一维数组创建

int a[];//数据类型标识符(int char float...) 数组名[];

如上我们创建了可以存储int(整型)类型的数组a。

有时我们需要为数组指定大小,那么有应该如何做?

int a[4];//创建了一个可以存储4个int(整型)类型的数组a。

​不难看出只要在中括号里填入大小即可​

!!!注意:中括号里不能出现变量,哪怕是用const修饰的变量也不能出现,只能是常量整型表达式

例如

//错误写法
int i = 10;
int a[i];//***error
const int n = 10;
int b[n];//***error
int c[2.5];//**error

数组的初始化

int a[] = {1,2,3,4,5,6,7,8,9,10};//数组没有指定大小

当数组没有指定大小的时候,编译器会根据数组元素个数来指定大小,如上数组a的大小为10个整形;

但要注意字符串数组例外

char str1[] = "abcdef";//大小为7个字节
char str2[] = {'a','b','c','d','e','f'};//大小为6个字节

C语言学习记录13(数组)_数组_02

因为str1存储的是字符串,而字符串的结尾编译器会自动放个‘\0’字符。

数组的访问

通过下标访问,下标从0开始

char str1[] = "abcdef";
str1[2];//访问str1数组的第3个元素,使用下标应用操作符'[]'

C语言学习记录13(数组)_数组_03

一维数组的在内存中存储

C语言学习记录13(数组)_数组_04

由于输出的内存地址为16进制所8-C相差4,C-0相差4...

不难看出数组在内存中是​连续存储​的。


二维数组

二位数组的创建,与一维数组类似

int num[2][3];//创建一个“2行3列”的数组

!!!注意:中括号里不能出现变量,哪怕是用const修饰的变量也不能出现,只能是常量整型表达式

但二维数组的​行是可以省略的,列是不能省略的​;如以下代码

//正确写法
int num1[][4];
int num2[2][4];

//错误写法
int num3[1][];
int num4[][];

二维数组的初始化

int num1[2][4] = {1,2,3,4,5};
int num2[2][4] = {{1,2,3,4},{5,6,7,8}};

上面两种初始化的区别:第一种方法,如果元素个数大于列则会自动初始化到下一行。第二种方法,指定初始化的行(推荐)

二维数组的访问,类似于一维数组

int num2[2][4] = {{1,2,3,4},{5,6,7,8}};
num2[0][2];访问第一行数组的第3个元素3

C语言学习记录13(数组)_数组_05

我们可以将​一维数组arr[0]作为数组名​,由此我们可以这么写arr[0][j]表示第一行数组第j个元素。

二维数组在内存中的存储

C语言学习记录13(数组)_数组_06

不难看出二维数组在内存中也是连续存储的














举报

相关推荐

0 条评论