12.从零开始学习C语言--数组

数组

1.数组的作用

a) 为了解决大量同类型数据的存储和使用,如要统计全校同学的成绩

b) 为了模拟现实问题(有点类似汇编的寻址...),如一个班级根据多少排多少列找到某一同学:a[i][j]

2.数组的缺陷

a) 长度固定,为便利

b) 编程语言对原始数组提供的操作支持太少,像排序、倒置、查找需要自己编写代码

一维数组

1.一维数组所具备的特征:

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];

   }

二维数组

1.定义:int a[i][j]; 如 int a[3][4];

这里表示总共有12个元素,可以当成34列来看待

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][n]; 最后一个元素是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个元素的小一维数组。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值