![](/img/trans.png)
[英]can someone explain me what is happening here for using malloc for pointer
[英]Can someone explain what's happening with this code?
#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[]
什么作用?
a - 1
不会更改a
,就像3 + 2
不会更改3
。
此代码将导致未定义的行为,因为a - 1
试图形成的边界的指针外a
。 但是实际上,可能会忽略b
行,因此您的代码将具有与以下行为相同的行为:
int a[] = {10, 20, 30, 40, 50};
printf("%d \n",*(a+2));
当然可以打印30
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.