C语言中如何用指针运算符来表示一个二维数组的元素及地址?
答案:3 悬赏:0 手机版
解决时间 2021-02-20 03:23
- 提问者网友:不要迷恋哥
- 2021-02-19 15:28
C语言中如何用指针运算符来表示一个二维数组的元素及地址?
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-02-19 16:35
二维指针,就是说第一维是指针,第二维还是指针;
拿*(*(a+i)+j)来说:a是数组的首地址吧,然后+i,就是说a地址向后偏移i位。就是a+i的地址了,注意,这里a+i只是地址,用*符号取出该地址的数据,就是*(a+i),这里*(a+i)就是第一维指针,它指的是地址,不是数据。
而且后面的*(a+i)+j就是说以*(a+i)为首地址,偏移j位,然后使用*取内容,这里就是第二维了,取到的数据就是实际数据了追问*(a+i)不是取出指针所指数据么?为什么说又是指地址?追答因为这是二维指针啊
*(a+i)是指针的数据,例如0x1234,但是0x1234只是代表数据,你需要再*一下,相当于去0x1234的地址去拿 数据,这里的数据才是你要的
拿*(*(a+i)+j)来说:a是数组的首地址吧,然后+i,就是说a地址向后偏移i位。就是a+i的地址了,注意,这里a+i只是地址,用*符号取出该地址的数据,就是*(a+i),这里*(a+i)就是第一维指针,它指的是地址,不是数据。
而且后面的*(a+i)+j就是说以*(a+i)为首地址,偏移j位,然后使用*取内容,这里就是第二维了,取到的数据就是实际数据了追问*(a+i)不是取出指针所指数据么?为什么说又是指地址?追答因为这是二维指针啊
*(a+i)是指针的数据,例如0x1234,但是0x1234只是代表数据,你需要再*一下,相当于去0x1234的地址去拿 数据,这里的数据才是你要的
全部回答
- 1楼网友:廢物販賣機
- 2021-02-19 17:16
- 2楼网友:动情书生
- 2021-02-19 16:48
首先你得知道a就是数组第一个元素的地址,而二维数组a[i][j]可以理解为a[i]数组每个元素储存的是一个j个元素大小的另一个数组,这样理解的话,先说*(*(a+i)+j),a+i就不说了相当于被重载操作符一样,指针+1的含义就是加一个单位的数据大小,然后*(a+i)则相当于a[i]的值对吧,而a[i]的值就是下一个数组的指针现在源代码相当于*(a[i]+j),然后自己分析吧,很简单的,不过说实话没必要真么纠结,真写代码没多少人闲的蛋疼真么写的,给自己制造麻烦不说,后期维护也会很痛苦的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯