【C语言】数组与指针

来源:互联网 发布:苏新诗毛糙体简 mac 编辑:程序博客网 时间:2024/06/06 15:54
第一题:
请写出以下代码输出

1
2
3
4
5
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a + 1);
printf("%d, %d", *(a + 1), *(ptr + 1));

答案:2,随机数

注: ptr 的 初始化 指向 了 a 的 首地址 加 偏移 sizeof(int) * 5,
 *(ptr+1)的地址等于数组*(a+6)




第二题:
写一个标准宏Max,并给出以下代码的输出

1
2
3
4
5
6
int array[5] = {1, 2, 3, 4, 5};
int *p = &array[0];
int max = Max(*p++, 1);
printf("%d %d", max, *p);
宏定义为:   #define Max(X, Y) ((X) > (Y) ? (X) : (Y))
注:*p++     1. *p值给表达式,  2.p++
答案:1,2
0 0