C程序:分段错误

时间:2016-08-01 06:26:04

标签: c

我是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;
   }

1 个答案:

答案 0 :(得分:2)

当您调用scanf时,您需要传递要存储该值的address of the variable

这意味着,如果您想将值存储在变量start中,则需要将address of start传递给scanf

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

scanf("%d", &start);

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