int *ptr=(int *)(&a+1)

昨晚有小伙伴问了一道题,感觉挺经典的。    1 int a[5] = {1, 2, 3, 4, 5}; 2 3 int *ptr = (int *) (&a + 1); 4 5 printf("%d %d \n\r", *(a + 1), *(ptr - 1) ); 从内存分布的角度来解析:  &a和a做右值时的区别: &a是整个数组的首地址,而a是数组首元素的首地址。这两个在数字上是相等的
相关文章
相关标签/搜索