scanf并指向int*分段错误

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)

为什么这段代码会导致分段错误?

K-b*_*llo 9

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)