kbi*_*irk 0 c pointers scanf segmentation-fault
我调用我的程序,它是从标准输入读取一堆整数
int main() {
int* s;
derp(s);
return 0;
}
void derp(int *size) {
scanf("%d", size);
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码会导致分段错误?
int* s;
derp(s);
Run Code Online (Sandbox Code Playgroud)
有什么s意义?随机垃圾内存,因为它没有初始化.你应该这样做:
int s;
derp(&s);
Run Code Online (Sandbox Code Playgroud)
或者你可以使用分配存储空间malloc:
int* s = malloc( sizeof(int) );
derp(s);
free(s);
Run Code Online (Sandbox Code Playgroud)