如果我的问题看起来绝对微不足道,我提前道歉,但我不明白为什么如果我跑
int main(){
int *count = 0;
printf("%d",*count);
}
我没有输入(使用 Xcode)和一个错误:
线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)
有人可以向我解释这是什么吗?
发生的事情是取消引用一个空指针,这是未定义的行为:你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
}
您已声明count
为指向整数值的指针而不是整数值,并且已将指针初始化为 NULL(内存地址 0)。
您会想要执行以下操作...
int main()
{
int buffer = 0;
int* count = &buffer;
printf( "var %d = %d\n", buffer, *count );
}