c语言阵列与数组,阵列,数组

数组

1数组

引例

• 一个学生的成绩在0~100之间,可以用char表示

• char a = 98;

• 一个班有30个学生,如何表示他们的成绩?

• char a00 = 98;

• char a01 = 95;

• …

• char a29 = 88;

• 一共定义30个变量, a00~a29

引例

• 一个年级有100个学生,如何表示它们的成绩?

• ???

• 使用数组:只需要定义一个变量

• char arr[100];

数组

• char arr[5];

• 数组的元素类型: char

• 数组的名称: arr

• 数组的元素个数: 5

• 意义:相当于N个变量并排在一起

数组的初始化

• 数组定义时可以不初如化,例如,

• char arr[5];

• 数组也可以初始化,例如,

• char arr[5] = {90,91,92,93,94 };

• 也可以只初始化一部分元素:

• char arr[5] = {90,91 };

数组的内存表示

• char arr[5] = {90,91,92,93,94 };

• 在内存中是5个字节,依次值为90,91,92,93,94

数组的使用

• char arr[5] = {90,91,92,93,94 };

• 想知道第1个同学的分数

• char s1 = arr[0];

• 想知道第2个同学的分数

• char s2 = arr[1];

• 注意:在访问数组的元素时,中括号内的下标是 从0开始的,arr[0], arr[1], …, arr[4]

改变数组中元素的值

• char arr[5] = {90,91,92,93,94 };

• arr[0] = 89;

• arr[1] = 88;

• …

• 在VC中观察内存中值的变化。。。

小例子

• char arr[5] = {90,91,92,93,94 };

• 在录入的时候第2个同学和第3个同学的成绩搞反 了,要求改过来。。。。

char s = a[1];

a[1] = a[2];

a[2] = s;

更多数组

• int arr[8] = {1,2,3,4,5,6,7,8}; // 4*8=32

• short arr[100];

• double arr[100];

• float arr[100];

• 注意:元素类型、元素个数、数组名、初始值

2二维数组

一维数组的初始化方法

① char a[5]; // 不给初始值

② char b[5] = {90, 91, 92, 93, 94 }; // 给 全初始值

③ char c[5] = { 90, 91 };// 部分初始化

④ char d[5] = {0}; // 全部为0

⑤ char e[] = {90, 91, 92, 93, 94};

⑥ 注:最后一个元素不要逗号

引例

语文 数学 外语 第1个同学 90 91 92

第2个同学 80 81 82

第3个同学 70 71 72

第4个同学 60 61 62

第5个同学 50 51 52

-

语文

数学

外语

第1个同学

90

91

92

第2个同学

80

81

82

第3个同学

70

71

72

第4个同学

60

61

62

第5个同学

50

51

52

数组

• char arr[15] =

• {

▫ 91, 92, 93, 81, 82, 83, 71, 72, 73,

▫ 61, 62, 63, 51, 52, 53

• };

• 第m位同学的第n门的成绩:

• arr [ m * 3 + n];

• m: 0, 1, 2, 3, 4

• n: 0, 1, 2

二维数组的初始化

• char arr[5][3] =

• {

▫ { 91, 92, 93 }, // 每一行以逗号分隔

▫ { 81, 82, 83 }, // 每一行以逗号分隔

▫ { 71, 72, 73 }, // 每一行以逗号分隔

▫ { 61, 62, 63 }, // 每一行以逗号分隔

▫ { 51, 52, 53 }, // 每一行以逗号分隔

};

二维数组的访问

• 访问元素的方法:

• arr[0][0]; // 第0行第0列

• arr[m][n]; // 第m行第n列

• 注间:下标从0开始

二维数组的访问

• 访问元素的方法:

• arr[0][0]; // 第0行第0列

• arr[m][n]; // 第m行第n列

• 注间:下标从0开始

二维数组的内存视图

• char arr[5][3] =

• {

▫ { 91, 92, 93 }, // 每一行以逗号分隔

▫ { 81, 82, 83 }, // 每一行以逗号分隔

▫ { 71, 72, 73 }, // 每一行以逗号分隔

▫ { 61, 62, 63 }, // 每一行以逗号分隔

▫ { 51, 52, 53 }, // 每一行以逗号分隔

• };

• 二维数组本质上还是一维数组。。。。

二维数组和一维数组的区别

• 本质一样

• char a[15];

• char b[5][3];

• 在内存中都是15个字节

• 表示二维问题,用二维数组会方便一些,不用自 己计算下标了。

小结

• 表示二维问题(表格状数据)用二维数组更方便

• 二维数组和一维数组本质相同

• 一维数组最重要,二维数组或高维数组极少被使 用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值