我有这个代码给指针一个地址并打印它,但为什么不起作用?
void main()
{
int *b = (int*) 32;
printf("%d\n",b[0]);
}
答案 0 :(得分:4)
b[0]
取消引用指向您尚未分配的内存的数组。这样做的效果是不明确的。如果地址32
无法从您的流程中读取,则可能会返回一个值,否则您的程序可能会崩溃。
答案 1 :(得分:0)
int *b = (int*) 32;
上面的代码将内存地址32分配给此指针,我不认为你想要的是,当你调用printf时,你会得到访问被拒绝的错误, 希望以下代码是有用的
int a = 32;
int *b = &a;
printf("%d\n",b[0]);
//output 32
printf( "%d\n", &b);
// output b pointer address.