首页 > 试题广场 >

(c语言)在二维数组int a[2][4]={{2,4,5,

[单选题]
(c语言)在二维数组int a[2][4]={{2,4,5,7},{3,6,1,8}}中,*(&a[0][0]+4)的值是( )
  • &a[0][4]
  • 6
  • 3
  • a[0][4]
(c语言)在二维数组int a[2][4]={{2,4,5,7},{3,6,1,8}}中,*(&a[0][0]+4)的值是( )
1、首先需要理解一点,指针+/-整数的含义是:指针的类型是什么,则+/-1就偏移多大。
显然a[0][0]是一个整型元素,所以&a[0][0] == int * p所以,p指向的类型为int,p+1偏移一个int,p+4偏移四个int。
2、此外,还需要理解一点,变量的地址的概念,地址是按字节编址的,一个变量的地址是以起始地址作为变量的地址。如:int a;占四个字节的范围,假设为0x01 0x02 0x03 0x04,则&a的地址是首个地址,即0x01
由上面两点可知,*(&a[0][0]+4)==*(p+4),p指向第一个元素的起始地址,p+1为4的起始地址,p+2为5的起始地址,......,p+4为3的起始地址,所以*(p+4) == 3
发表于 2023-04-29 10:27:10 回复(0)

*(&a[0][0]+4)=a[1][0]=3
发表于 2020-08-09 21:03:02 回复(2)
虽然在选项的局限下选了3,但是有没有一种可能是地址加4个字节而答案是4呢?

发表于 2023-03-14 15:46:12 回复(0)
第一个地址往下+
发表于 2021-03-17 16:49:09 回复(1)
为什么不能是a[0][4]
发表于 2021-12-16 10:04:00 回复(2)