模块函数不返回答案
问题描述:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
func (int x, int apple);
int main()
{int x,apple;
scanf("%d",x);
func (x,apple);
if (apple==0)
printf("Yes");
else if (apple==1)
printf("no!");
}
func (int x,int apple)
{
if ((x%7)==0||(x%11)==0||(x%13)==0)
apple=0;
else
apple=1;
}
整个事情的想法是,该函数测试输入的值是否是7,11或13的倍数,并给出结果。模块函数不返回答案
该函数工作得很好(就编译器没有检测到错误而言启动就好)但是我在编译器窗口得到的结果(输入任何值后)是进程返回1,没有其他的。而在此之前,它给了我一个Windows错误,而且我工作的项目坠毁。
我几乎*使用指针,所以我做错了什么?
感谢帮助!
答
-
有被提供给
scanf()
格式说明"%d"
和参数类型之间的不匹配,一个int
被指定时,它必须是一个int*
:这是未定义的行为。合格x
的地址以scanf()
,并确保x
通过检查的scanf()
其成功返回的任务数量返回值赋值:的void
if (scanf("%d",&x) == 1) { }
国家返回类型
func()
。-
传递地址
apple
到func()
(和更改参数int* apple
)左右的时间内func()
到apple
所做的任何更改是给调用者可见:void func (int x, int* apple) { /* Dereference 'apple' for assignment. */ *apple = 0; }
我没有看到任何在这里指针,除了你被忽视的'scanf'。 – chris 2013-04-07 20:43:53