想请问一下大家这两个程序是怎么进行赋值和运行的,为什么结果相差这么多
int *a=(int*)3;
对上面的这一步完全不理解
#include<stdio.h>
int main(void)
{
int *a=(int*)3;
printf("%d",a);
return 0;
}
这个的输出结果是3
#include<stdio.h>
int main(void)
{
int *a=(int*)3;
printf("%d",a+1);
return 0;
}
而这个的输出是7
第一个赋值语句是定义了一个指向整形的指针变量,他不能直接用数字来赋值,要用引用,他这里用了int*来赋值,其实也就表示将3赋值给了a。所以输出就是3,下面的a+1输出的应该是一个随机数,a+1表示他的地址加一,那个数字是随机的,不同的系统,电脑值都不一样