C - 指针和更改地址

时间:2013-07-14 10:58:01

标签: c

我有这个代码给指针一个地址并打印它,但为什么不起作用?

void main()
{
int *b = (int*) 32;
printf("%d\n",b[0]);
}

2 个答案:

答案 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.
相关问题