C 指针错误消息
如果我的问题看起来很琐碎,我会提前向你道歉,但我不明白为什么我要逃跑C 指针错误消息,c,xcode,macos,pointers,C,Xcode,Macos,Pointers,如果我的问题看起来很琐碎,我会提前向你道歉,但我不明白为什么我要逃跑 int main(){ int *count = 0; printf("%d",*count); } 我没有输入(使用Xcode)和一个错误: 线程1:EXC\u错误访问(代码=1,地址=0x0) 有人能给我解释一下这是什么吗?所发生的是取消对空指针的引用,这是一种未定义的行为:您的计数是一个指针,这意味着它需要指向一个有效位置,然后您才能从中读取: int main(){ int *count =
int main(){
int *count = 0;
printf("%d",*count);
}
我没有输入(使用Xcode)和一个错误:
线程1:EXC\u错误访问(代码=1,地址=0x0)
有人能给我解释一下这是什么吗?所发生的是取消对空指针的引用,这是一种未定义的行为:您的
计数是一个指针,这意味着它需要指向一个有效位置,然后您才能从中读取:
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
是一个指针,这意味着它需要指向一个有效位置,然后才能从中读取:
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
声明为指向整数值的指针,而不是整数值,并且已将指针初始化为空(内存地址0)
您将要执行以下操作
int main()
{
int buffer = 0;
int* count = &buffer;
printf( "var %d = %d\n", buffer, *count );
}
您已将count
声明为指向整数值的指针,而不是整数值,并且已将指针初始化为空(内存地址0)
您将要执行以下操作
int main()
{
int buffer = 0;
int* count = &buffer;
printf( "var %d = %d\n", buffer, *count );
}
只是为了测试一下,如果我把这段代码放在一个cpp文件中,我会得到一行“int*count=malloc(sizeof(int));”不能用void*类型的右值初始化int*类型的变量;是否有一个等价于CPP文件?@ USE1611830,那是因为你使用C++编译器:在C++中需要一个强制转换:<代码> int *Cuint =(int *)Malc(siZeof(int));代码>我没有放置强制转换,因为它在C中不是必需的。只是为了测试,如果我将此代码放置在cpp文件中,我会得到行“int*count=malloc(sizeof(int));”无法使用void*类型的右值初始化int*类型的变量;是否有一个等价于CPP文件?@ USE1611830,那是因为你使用C++编译器:在C++中需要一个强制转换:<代码> int *Cuint =(int *)Malc(siZeof(int));代码>我没有加入演员阵容,因为这在C中不是必需的。顺便说一句,@CarlNorum,我不是有意要分开头发,如果我的评论听起来像这样,我很抱歉。顺便说一句,@CarlNorum,我不是有意分开头发,如果我的评论听起来像这样,我很抱歉。