数据结构二维数组求地址问题求解 250

二维数组A[0....19][0....79]的基地址是2000,每个元素占4个存储单元(1)若以行序为主,则元素A[12][40]的存储地址为多少(2)若以列序为主,则... 二维数组A[0....19][0....79]的基地址是2000,每个元素占4个存储单元
(1)若以行序为主,则元素A[12][40]的存储地址为多少
(2)若以列序为主,则元素A[12][40]的存储地址为多少

(求详细计算过程,及原因,谢谢)
展开
 我来答
紫薇参星
科技发烧友

2021-12-01 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3591万
展开全部

题目的答案,计算过程及原因,见图.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pdsulzg
高粉答主

2021-12-01 · 每个回答都超有意思的
知道大有可为答主
回答量:3.3万
采纳率:76%
帮助的人:6703万
展开全部
1.所占单元(13*20+41)*4=301*4=1204
存储地址2000+1204=3204
2.所占单元(41*80+13)*4=13172
存储地址13172+2000=15172
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT晓宇学长
2021-11-30 · TA获得超过834个赞
知道小有建树答主
回答量:4647
采纳率:31%
帮助的人:153万
展开全部
1、&a[0][0]为0行0列元素的首地址,a[0]+n为0行第n个元素地址,那么a[0]是表示0行首元素地址吗?
>>正确, a[0]就是0行首地址.
&a[0]是零行的首地址,实际上行的地址也只有一个,也无所谓0行的首地址吧?
>>&a[0]值上, 是和a[0]相同的, 不过类型不一样. a[0]等效于int *型,实际上是指向一个元素. 而&a[0]是行指针, 指向一行.所以,a[0]+n和&a[0]+n是完全不同的.
+n相当于元素位移了n个位置吗,所以代表第n个元素地址吗?
>>+n取决于原始指针的类型. 如果是a[0]+n 移动的是n个元素.而&a[0]+n就是移动n行了.
然后*(a[n]+m)就表示n行第m个元素了?
>>这句没错. 任何情况下, *(p+n)都等效于p[n]2、书中写a+n表示第n行的首地址,那是相当于&a[n]吗,a不是表示数组首个元素地址吗,怎么+n不是元素位置改变,却是位移了行?
>>这个上面说过了, 核心在于指针的类型. 二维数组int a[M][N]的数组名a, 本质上是常量的int (*)[N]类型, 也就是数组指针. 移动的时候是整行移动的.
还是a+n表示n行首个元素的地址?为什么
>>同上*(a+n)与a[n]是等价的,原理是什么,*(*(a+n)+m)怎么也能表示n行m列元素呢?
>>*(a+n)与a[n]等价, 这个是C语言的一个规则. 其本质是, 当编译器遇到a[n]这样的形式时, 实际上是翻译成*(a+n)进行编译的. 这种可以用一个很少见的形式来验证.你定义
int a[4]={1,2,3,4}; 然后输出
printf("%d\n", 3[a]);
对, 就是把数组名放进[], 实际上会输出a[3]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式