第1题
#include<stdio.h>
int main()
{
int aa[2][5] = {1,2,3,4,5,6,7,8,9,10};
int *ptr1 = (int*)(&aa + 1);//&aa 取出整个数组的地址 &aa+1 取出数组的地址然后跳过整个二维数组
int *ptr2 = (int*)(*(aa + 1));//(aa+1)==aa[1] 第二行的地址
//aa 数组名 数组名是首元素地址 所以aa是第一行的地址
//*(aa+1)跳过第一行的地址,然后解引用
printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));//10 5
//*(ptr1 - 1)向前移动一位
//*(ptr2 - 1)向前移动一位
return 0;
}
画图分析:
运行结果:
第2题
本题是曾经阿里巴巴的面试真题,坑有点多,请不要自闭!
#include