#include<stdio.h>
int main()
{
int a[] = {10, 20, 30, 40, 50};
int *b = a - 1;
printf("%d \n",*(a+2));
}
我知道它打印的
30
和a[2]
是一样的,但是怎么打印呢?a - 1
对数组做什么? 最佳答案
a - 1
不会改变a
,就像3 + 2
不会改变3
一样。
此代码导致未定义的行为,因为a - 1
试图在a
的边界之外形成指针。但实际上,很可能会忽略b
行,因此代码的行为与:
int a[] = {10, 20, 30, 40, 50};
printf("%d \n",*(a+2));
当然会打印
30
。