c语言二维数组难点,C语言-二维数组

前文介绍的数组只有一个下标,称之为一维数组,其数组元素为单下标变量。然而,在实际问题中,有很多变量是二维或者多维的。因此,在C语言中也是允许多维数组出现的,多维数组有多个下标来表示它在数组中的位置,同时,也被称之为多下标变量。本文以二维数组为例,进行说明。

1 二维数组的定义

定义:多个一维数组的集合,称之为二维数组。

一般形式:

数据类型说明符 数组名 [常量表达式1][常量表达式2]

注释:

1.类型说明符是基本数据类型或者结构数据类型;

2.数组名是用户自己定义的名称;

3.常量表达式1x常量表达式2表示的是数组元素的个数,又称数组长度。

例如:int arr[3][5]

// 说明一个3行5列的数组,数组名为arr,其下标变量的类型为整型,int表示其中的元素为整型数据。

// 该数组的下标变量共有3x5个,即:

arr[0][0] arr[0][1] arr[0][2] arr[0][3] arr[0][4]

arr[1][0] arr[1][1] arr[1][2] arr[1][3] arr[1][4]

arr[2][0] arr[2][1] arr[2][2] arr[2][3] arr[2][4]

注意:

1.同一个数组里面的元素,其值的类型是相同的;

2.数组名的书写应符合标识符的书写规范;

3.数组名不能与其他变量相同。

2 二维数组的赋值

1.int arr[2][3]={{1,2,3},{4,5,6}};

2.int arr[2][3]={1,2,3,4,5,6};

3.int arr[2][3]={1,2,3};

4.int arr[][3]={1,2,3};

5.int arr[2][3]={{[1]=6},{[2]=7}};

6.int arr[][3]={}; // 默认用零补全第一行,相当于一个一位数组arr[3]

3 二维数组的引用

二维数组的元素也称之为双下标变量,其表达式为:

数组名 [下标][下标]

例如:arr[2][3]

表示arr数组第二行,第三列的元素

练习1:请将数组arr[3][5]={{1,2,3,4,5},{12,23,4,5,6},{7,8,9,0}}打印输出,并求其平均值。

#include

int main()

{

int i,j,s=0;

int arr[3][5]={{1,2,3,4,5},{12,23,4,5,6},{7,8,9,0}};

for(i=0;i<3;i++)

{

for(j=0;j<5;i++)

{

printf ("arr[%d][%d]=%d\t",i,j,arr[i][j]);

s+=arr[i][j];

}

printf ("\n");

}

s=s/5;

printf ("a=%d\n",a);

return 0;

}

4 二维数组和指针的关系

利用指针去访问数组

练习2:用指针输出上面的二维数组。

#include

int main()

{

int arr[3][5]={{1,2,3,4,5},{12,23,4,5,6},{7,8,9,0}};

int (*p)[5]=arr;

int i=0,s=0;

for (;i<3;i++)

{

int j=0;

for(;j<5;j++)

{

printf ("p[%d][%d]=%d\t",i,j,p[i][j]);

s+=*((*p+i)+j);

}

printf ("\n");

}

S=S/5;

printf("s=%d\n",s);

}

结论:

1.只有int (p)[3]=arr存在,arr能做的事,p都能做,arr不能做的事,p也能做。

2.用指针表示第i行第j列的元素的值:((p+i)+j),p[i][j],(p[i]+j)

3.用指针表示第i行第j列元素的地址:*(p+i)+j,&p[i][j],p[i]+j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值