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