C程序:分段错误

C程序:分段错误,c,C,我是C编程新手,我的代码中有一个分段错误。该程序使用一个返回函数向用户询问他们的银行账户中有多少钱。稍后我会添加代码来计算利息。谢谢你帮我看这个,因为我很难找出为什么会出现这个错误 #include <stdio.h> #include <stdlib.h> int getPV() { int d; int start; printf("Start: "); scanf("%d", start); d = start;

我是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;
   }
#包括
#包括
int getPV()
{
int d;
int启动;
printf(“开始:”);
scanf(“%d”,开始);
d=启动;
返回d;
}
int main()
{
int pv;
pv=getPV();
打印(“%d”,pv);
返回0;
}

调用scanf时,需要将要存储值的变量的
地址传递给它

这意味着,如果要将值存储在变量
start
中,则需要将start
地址传递给
scanf

您可以使用
&
运算符获取变量的地址。因此,您需要将scanf更改为:

scanf("%d", &start);

使用
scanf(“%d”,start)时出现分段错误
因为,
start
是一个自动变量,在给它赋值之前,它将包含一个垃圾(随机)值
scanf
将此随机值视为用户输入值必须存储到的地址。现在,当
scanf
尝试将用户输入的值存储到此随机地址位置时,会出现分段错误,因为很可能您的程序不允许访问该地址位置。

scanf(“%d”,start)-->
scanf(“%d”,启动(&start))。建议:打开编译器警告,不要忽略它们。