12.从零开始学习C语言--数组
2013-06-21 21:49
127 查看
数组 |
a) 为了解决大量同类型数据的存储和使用,如要统计全校同学的成绩
b) 为了模拟现实问题(有点类似汇编的寻址...),如一个班级根据多少排多少列找到某一同学:a[i][j]
2.数组的缺陷
a) 长度固定,为便利
b) 编程语言对原始数组提供的操作支持太少,像排序、倒置、查找需要自己编写代码
一维数组 |
a) 数组中的变量是连续分配内存空间的
b) 所有变量数据类型相同
c) 所有变量所占的字节相同(内存空间大小相同)
2.定义一个含有5个整型元素的数组:
int a [5];
此数组中的5个元素分别是a[0]、a[1]、a[2]、a[3]、a[4],数组中的元素其实就相当于名为a[i]的变量,那么也可以通过scanf()来给元素赋值,scanf(“%d”, %a[i]);或者直接给元素赋值,a[i] = 100;
3.数组的初始化
a) 完全初始化:int a[5] = {1, 2, 3, 4, 5}
b) 不完全初始化:int a[5] = {1, 2, 3} 未初始化的元素自动置0
c) 不初始化:int a[5] 所有元素均为垃圾值
d) 清零:int a[5] = {0}
4.常见错误
a) int a[5];
a[5] = {1, 2, 3, 4, 5};
只有在定义数组时,才能给数组连续整体赋值,在数组定义时a[5]中的5代表的是数组长度,在其它地方代表都是下标即表示数组的第几个元素
b) int a[5] = {1, 2, 3, 4, 5};
a[5] = 100;
a数组最大元素为a[4],超出数组范围
c) int a[5] = {1, 2, 3, 4, 5}
int b[5];
b = a;
把数组a复制给b这么写是错误的,数组名代表的是数组第一个元素的地址
正确写法:
for (int i = 0; i<5; ++i)
{
b[i] = a[i];
}
二维数组 |
这里表示总共有12个元素,可以当成3行4列来看待
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j]表示第i+1行,j+1列的元素,因为是从a[0][0]开始计数的
int a[m]
; 最后一个元素是a[m-1][n-1],即右下面排列右下角位置
2.初始化
a) int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
b) int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}
3.二维数组的输出
# include <stdio.h> int main(void) { int a[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, }; for (int i=0; i<3; ++i) { for (int j=0; j<4; ++j) { printf("a[%d][%d] = %-5d", i, j, a[i][j]); //%-5d表示输出5个光标位,达到排列整齐的目的 } printf("\n"); } getchar(); return 0; }
多维数组 |
多维数组实际上是一个个小一维数组嵌套形成的新的大一维数组
n维数组是每个元素是n-1维数组的一维数组
如二维数组a[4][3],可以理解成含3个元素的一维数组,每个元素又是一个含有4个元素的小一维数组。
相关文章推荐
- 15.从零开始学习C语言--指针和数组
- C语言指针学习(二) ---- 指针与数组
- 【C语言学习笔记】数组、字符串、指针
- 12、sed、awk、数组 学习笔记
- C语言学习-数组
- c语言学习零碎整理(7):数组名是指针吗?(补)
- 【MongoDB学习笔记12】深入MongoDB的更新(update)操作:数组修改
- C语言--数组深入学习
- C语言学习笔记【指针04】指针数组与指向指针的指针 推荐
- 黑马程序员——IOS学习笔记(C语言字符串和数组)
- ios开发-c语言之数组、数组和函数的学习
- 13.从零开始学习C语言--函数
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- C语言数据结构学习之数组线性表
- 黑马程序员-C语言数组与指针学习心得
- C语言数组的学习
- c语言数组与指针的学习与思考
- C语言深度剖析学习笔记-指针、数组、内存、函数
- C语言数组与指针学习总结
- 6.从零开始学习C语言--if判断语句