#include <stdio.h>
void main(){
short num[3][2]={3,6,9,12,15,18};
printf("%d %d",*(num+1)[1],**(num+2));
}
答案是15 15 !!
请你们中的任何人解释一下吧!
答案 0 :(得分:5)
*(num+1)[1]
和**(num+2)
是编写相同内容的不同方式。也就是num
的第三个元素。num
的类型为short (*)[2]
。也就是说,它是指向2 short
个值的数组的指针。考虑到这两个事实,我们可以弄清楚代码在做什么。为简单起见,下面假设一个32位系统。
num+1
。由于num
指向两个short
值,使用指针算法,num+1
将在num
之后为4个字节(2个短路)。(num+1)[1]
。数组索引给出了从num+1
开始的第二个元素。这意味着超过num+1
的另外4个字节,因此超过num
的8个字节。num
之后访问8个字节会准确地提供15
。