数组 注意事项

1.一维数组的初始化

int a[5]={1,2,3,4,5}; 合法

int a[5]={1,2,3}; 合法

int a[]={1,2,3,4,5}; 合法,后面决定前面的大小

int a[5]={1,2,3,4,5,6}; 不合法!

2.一维数组的定义

int a[5]        合法

int a[1+1]    合法

int a[1/2+4] 合法

int x=5,a[x]  不合法,x是变量

define P 5        int a[P] 合法

3、二维数组的初始化

int a[2][3]={1,2,3,4,5,6};  合法,很标准的二维的赋值。

int a[2][3]={1,2,3,4,5};  合法,后面一个默认为0。

int a[2][3]={{1,2,3},{4,5,6}};  合法,每行三个。

int a[2][3]={{1,2}{3,4,5}};  合法,第一行最后一个默认为0。

int a[2][3]={1,2,3,4,5,6,7};  不合法,赋值的个数多余数组的个数了

int a[][3]={1,2,3,4,5,6};  合法,可以缺省行的个数。

int a[2][]={1,2,3,4,5,6};  不合法,不可以缺省列的个数。

定义二维数组时可缺行不缺列;有定义后可缺列不缺行

补充
一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是元素a[0]的地址。(等价于&a)
2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

对a[3][3]的讨论。
1、a表示数组名,是第一个元素的地址,也就是元素a[0][0]的地址。
2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。
3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1(第0行第二个元素),a[1]+1(第1行第二个元素),a[2]+1(第2行第二个元素)都是跳一列。
5、注意a和a[0](表示二维数组的第0行,即一维数组)、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。

二维数组做题目的技巧:
如果有a[3][3]={1,2,3, 4,5,6, 7,8,9}这样的题目。
步骤一:把他们写成:第一列 第二列 第三列
                          a[0]        1          2          3    →第一行
                          a[1]        4          5          6    →第二行
                          a[2]        7          8          9    →第三行

步骤二:这样做题目很简单:
*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是2。
*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。
一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。

记住以下表达形式:

a[2]变成*(a+2)

a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值