我是C编程的新手,在我的代码中遇到了分段错误。该程序使用返回功能询问用户银行账户中的金额。稍后我将添加代码来计算利息。谢谢你帮我看这个,因为我很难找出为什么会出现这个错误。
#include <stdio.h>
#include <stdlib.h>
int getPV()
{
int d;
int start;
printf("Start: ");
scanf("%d", start);
d = start;
return d;
}
int main()
{
int pv;
pv = getPV();
print("%d",pv);
return 0;
}
调用scanf时,需要传递要将值存储到的address of the variable
。
这意味着,如果要将值存储在变量start
中,则需要将address of start
传递给scanf
。
您可以使用&
运算符获取变量的地址。因此,您需要将扫描更改为:
scanf("%d", &start);
使用scanf("%d", start);
时会出现分段错误,因为start
是一个自动变量,在给它赋值之前,它会有一个垃圾(随机)值。scanf
会将这个随机值视为用户输入值必须存储的地址。现在,当scanf
试图将用户输入的值存储到这个随机地址位置时,就会出现分段错误,因为很可能您的程序不被允许访问该地址位置。