数组的地址的地址
执行如下代码后输出结果为( )
int main()
{
int a[5]  = {1, 2, 3, 4, 5};
int *ptr = (int*)(&a + 1);
printf("%d, %d", *(a + 1), *(ptr - 1));
return;
}
A  1,1
B  1,3
C  3,3
D  2,5
答案: D
解析:数组a本身就表示数组的首元素的地址,因而&a表示数组的地址的地址,因而&a+1表示的地址为数组a的首字母地址+数组a的大小。而(int *)(&a+1)即把其强制转换为int *类型,因而相当于ptr = &a+1。从而*(ptr-1)即数组a最后一个元素,因而输出是2,5。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号