关于C语言中二维数组的问题。

若有int*p,a[3][4];则a[0]a[0][0]a[0][1]a[0][2]a[0][3]a[1]a[1][0]a[1][1]a[1][2]a[1][3]a[2]... 若有 int *p,a[3][4];则
a[0] a[0][0] a[0][1] a[0][2] a[0][3]
a[1] a[1][0] a[1][1] a[1][2] a[1][3]
a[2] a[2][0] a[2][1] a[2][2] a[2][3]
则a[0]的地址就是a[0][0]的地址,a[0]是“存在”的且是“指针”且a[0]自己的地址“并不是”a[0][0]的地址,a,a[0]与a[0][0]是占用着3个不同地址的存储单元且a[0]内部装着的是a[0][0]的地址。
a的值与a[0]相同,只是a包含a[0],a[1],a[2]。而a[0]包含a[0][0] a[0][1] a[0][2] a[0][3]
我这样理解是否对呢?
展开
 我来答
huguangchaoren
2011-08-11 · TA获得超过814个赞
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:118万
展开全部
楼主这样理解是有问题的。

首先我们要先确定每个变量均是几维指针,a[0][0]不是指针,而是存储具体类型的变量,而后,
a[0]是一维指针,其指向数组a[0][0],a[0][1],a[0][2]的首地址,也就是a[0][0]的地址。最后,a也是指针,只不过他是二维指针,其中存储的也是地址,向上面一样,他存储的是a[0]的地址。所以他们之间并不是什么包含与被包含的关系。
他们之间仅仅是一个指向的关系。
追问
“a包含a[0],a[1],a[2] 。而a[0]包含a[0][0] a[0][1] a[0][2] a[0][3]”中的“包含”是根据书中可以把“二维数组理解为一种特殊的一位数组”那些文字来理解的。但不知道这里的a[0],a[1],a[2] 是否“真实”存在并占用“存储单元”,还是说,只是“虚拟”便于理解而出现的?
帐号已注销
2011-08-11 · TA获得超过128个赞
知道答主
回答量:89
采纳率:100%
帮助的人:70.1万
展开全部
这种问题,跟数据的内存存储和指针(不知道楼主学过指针没有)有莫大的关系!你可以这样理解,二维数组a[3][4]的存储就是在内存中划一块3*4的12个格子的空间,a跟a[0]都指向了第一行的首地址,同样,a[1]指向了第二行的首地址。a、a[0]等都只是一个地址,它们本身并没有“装下”什么的。
更多追问追答
追问
“a包含a[0],a[1],a[2] 。而a[0]包含a[0][0] a[0][1] a[0][2] a[0][3]”中的“包含”是根据书中可以把“二维数组理解为一种特殊的一位数组”那些文字来理解的。但不知道这里的a[0],a[1],a[2] 是否“真实”存在并占用“存储单元”,还是说,只是“虚拟”便于理解而出现的?
追答
这个二维数组只占用3*4=12个内存空间,a、a[0]、a[1]、a[2] 都是不占用存储单元的。a[0] 代表了整个第0行。a[1] 代表了整个第1行。也不能说是为了便于理解吧,是为了便于指代。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FrankHB1989
2011-08-11 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3294万
展开全部
LS错误。C语言没有new和delete关键字,这是C++的内容。
回答见http://zhidao.baidu.com/question/305230874.html

参考资料: 原创

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式