1

如果我的问题看起来绝对微不足道,我提前道歉,但我不明白为什么如果我跑

int main(){
    int *count = 0;
    printf("%d",*count);
}

我没有输入(使用 Xcode)和一个错误:

线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)

有人可以向我解释这是什么吗?

4

2 回答 2

3

发生的事情是取消引用一个空指针,这是未定义的行为:你count是一个指针,这意味着它需要指向一个有效的位置,然后你才能从中读取:

int main(){
    int *count = malloc(sizeof(int)); // Give your pointer a valid location
    *count = 123;                     // This is valid now
    printf("%d", *count);             // prints 123
    free(count);                      // Don't forget to free allocated memory
}
于 2013-04-15T17:45:37.840 回答
2

您已声明count指向整数值的指针而不是整数值,并且已将指针初始化为 NULL(内存地址 0)。

您会想要执行以下操作...

int main()
{
   int buffer = 0;
   int* count = &buffer;
   printf( "var %d = %d\n", buffer, *count );
}
于 2013-04-15T17:46:21.220 回答