若有定义:int a[3] [3];则表达式&a[2][1]-*a的值为()。
A.7 B.8 C.6 D.9
二维数组`int a[3][3];`表示一个3行3列的整型数组。要理解表达式`&a[2][1] - *a`的值
1. `&a[2][1]`:这是数组`a`中第三行第二列元素的地址。在内存中,二维数组是按行存储的,所以`a[2][1]`的地址是从数组起始地址开始,偏移了`2*3 + 1 = 7`个整型元素的位置
2. `*a`:这是数组`a`的首元素,即`a[0][0]`的值。但是,在这个表达式中,`*a`实际上被当作指向数组第一行首元素的指针,即指向`a[0][0]`的指针 `a`和`&a[0]`是等价的
- `&a[2][1]`是第三行第二列元素的地址。
- `*a`(或`a[0]`)可以看作是数组首元素的地址,也就是第一行首元素的地址。
- 这两个地址之间的差值就是它们之间有多少个整型元素。由于`&a[2][1]`是从数组起始地址偏移了7个整型元素的位置,所以这个差值是7
是个数
二维数组地址是连续的,3x3矩阵中a[2][1] - a[0][0]地址 = 8-1=7
zibingo 回复 zibingo: 矩阵 1 2 3 4 5 6 7 8 9
这题错了,减完之后还需要除以一个sizeof a(0)(0)
习作飞羽 回复 习作飞羽: 好吧,上机验证了不用除以sizeof,结果是7
admin 回复 习作飞羽: 已修正
李璞 回复 习作飞羽: 大佬,这怎么计算的呀
是7吧
admin 回复 HLY: 是的
A
用户登录可进行刷题及查看答案
登录后提交答案