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

调用scanf时,需要传递要将值存储到的address of the variable

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

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

scanf("%d", &start);

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

最新更新