C语言 数组中的指针

[数组中的指针]设有如下数组定义:inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};计算下面各项的值(设数组a的首地址为... [数组中的指针] 设有如下数组定义:
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
计算下面各项的值(设数组a 的首地址为2000,一个int类型数占四个字节)。注意:地址则输出地址,
变量则输出变量值;要求一行一个答案,不允许多余空行及空格。
(1)a[2][1] (2)a[1] (3)a (4)a+1
(5)*a+1 (6)*(a+1) (7)a[2]+1 (8)*(a+1)+1 (9)*(*(a+2)+2)
哪些是变量?哪些是地址?怎么分辨?
展开
 我来答
风雷九州
推荐于2016-05-19 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:413万
展开全部
一维数组可以认为是一个指针,二维数组可以认为是指针的指针。实质都是指针类型,就是地址。

(1)a[2][1]这是一个int类型,数值是19

(2)a[1]是一个指针,其实就是a[1][0]的地址,数值是2000+4*4 = 2016
(3)a是一个指针的指针,就是a[0][0]的地址,数值是2000
(4)a+1,其实就是a[1]的地址,即2016
(5)*a+1首先a是一直指针的指针,*a就是一个指针,地址是2000,+1就是跳过4字节,2004
(6)*(a+1),和a+1一样,即2016
(7)a[2]+1,a[2]是一个地址,2000+4*8=2032,+1就是在跳过4字节,2036
(8)*(a+1)+1,同上*(a+1)是一个指针,2016,+1就是在跳过4字节,2020
(9)*(*(a+2)+2),a+2就是a[2]的地址,*(a+2)就是a[2],(*(a+2)+2)就是a[2][2]的地址,再*就是值了,a[2][2] = 21

这个用VS或者VC调试功能,有个watch窗口,直接敲这些值就行了。
linzhimin88
2014-11-13 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:66
采纳率:100%
帮助的人:61.2万
展开全部
一个"[]" 或 "*",是数组
两个"[]" 或 "*",是变量,包括组合
a是二维数组或者数组指针。

所以:
变量是: 1 9
一维指针是:2 5 7 8
数组指针是:3 4 6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-11-13 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6381万
展开全部
(1)19
(2)0x2010
(3)0x2000
(4)0x2010
(5)0x2004
(6)0x2010
(7)0x2024
(8)0x2014
(9)21
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式