多维数组
二维数组
可以存储多个相同类型的数据
可以抽象成有行有列的形式
数据类型 数组名[行数][列数];
int arr[2][3];
一共有6个成员
arr[0][0] arr[0][1] arr[0][2]
arr[1][0] arr[1][1] arr[1][2]
int arr[3][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
现在想要找出数值为7的成员
数组名 + 下标 arr[1][1]
数组名 + 偏移量 *(*(arr + 1) + 1)
通过sizeof运算符计算
int arr[3][5];
sizeof(arr[0][0]) = 4 = 一个成员的大小
sizeof(arr[0]) = 20 = 一行的大小
sizeof(arr) = 60 = 整个数组的大小
sizeof(arr)/sizeof(arr[0][0]) = 15 = 成员个数
sizeof(arr)/sizeof(arr[0]) = 3 = 行数
sizeof(arr[0])/sizeof(arr[0][0]) = 5 = 列数
通过打印每个成员的地址发现
二维数组的成员也是占用了连续的存储空间
二维数组的数组名相当于是数组首行的地址
(一维数组的数组名相当于是数组首成员的地址)
字符数组和字符指针
在C语言中没有字符串类型
在C语言中需要使用字符数组来存储字符串数据
字符数组
1.字符数组的含义
是用来存储一组字符数据的
2.字符数组的定义
数据类型 数组名 [成员个数] ;
char arr [10] ;
3.字符数组的初始化
数据类型 数组名 [成员个数] = {数值,数值};
char arr[10] = {0};//给数组的10个成员都初始化成0
char arr[5] = {1,2,3,4,5};
char arr[5] = {'1','2','3','4','5'};
char arr[5] = {'\0'};
char arr[5] = {'0'};
char arr[10] = "easthome";
arr[0] = 'e' arr[1] = 'a' ... arr[7] = 'e'
arr[8] = '\0'
char arr[10] = {"easthome"};
注意 :
当通过scanf("%c")的方式给字符数组录入字符数据时
需要注意回车('\n'),因为回车会被当作换行符保存到
字符数组中
当通过scanf("%s")的方式给字符数组录入字符数据时
需要注意空格,因为空格会被当作字符串的截断标志
当通过scanf("%s")的方式给字符数组录入字符数据时
需要注意数组越界的问题