模块功能不返回答案 #包括 #包括 #包括 func(int x,int apple); int main() {int x,苹果; scanf(“%d”,x); func(x,苹果); 如果(苹果==0) printf(“是”); else if(apple==1) printf(“不!”); } func(整数x,整数苹果) { 如果((x%7)==0 | |(x%11)==0 | |(x%13)==0) 苹果=0; 其他的 苹果=1; }

模块功能不返回答案 #包括 #包括 #包括 func(int x,int apple); int main() {int x,苹果; scanf(“%d”,x); func(x,苹果); 如果(苹果==0) printf(“是”); else if(apple==1) printf(“不!”); } func(整数x,整数苹果) { 如果((x%7)==0 | |(x%11)==0 | |(x%13)==0) 苹果=0; 其他的 苹果=1; },c,function,pointers,crash,C,Function,Pointers,Crash,整个过程的思想是,函数测试输入的值x是7、11还是13的倍数,并给出结果 该函数工作得很好(编译器没有检测到错误,启动得很好),但我在编译器窗口(输入任何值后)得到的结果是进程返回1,而没有返回任何其他值。在此之前,它给了我一个windows错误,我正在做的项目崩溃了 我几乎被迫使用指针,那么我做错了什么 谢谢你的帮助 格式说明符“%d”与提供给scanf()的参数类型不匹配,当必须是int*时指定int:这是未定义的行为。通过检查scanf()的返回值,将x的地址传递给,并确保为x分配了一个

整个过程的思想是,函数测试输入的值x是7、11还是13的倍数,并给出结果

该函数工作得很好(编译器没有检测到错误,启动得很好),但我在编译器窗口(输入任何值后)得到的结果是进程返回1,而没有返回任何其他值。在此之前,它给了我一个windows错误,我正在做的项目崩溃了

我几乎被迫使用指针,那么我做错了什么

谢谢你的帮助

  • 格式说明符
    “%d”
    与提供给
    scanf()
    的参数类型不匹配,当必须是
    int*
    时指定
    int
    :这是未定义的行为。通过检查
    scanf()
    的返回值,将
    x
    的地址传递给,并确保为
    x
    分配了一个值,该值返回成功分配的数量:

    #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;
    
    }
    
  • func()
    的状态返回类型为
    void

  • apple
    的地址传递给
    func()
    (并将参数更改为
    int*apple
    ),以便调用方可以看到
    func()
    中对
    apple
    所做的任何更改:

    if (scanf("%d",&x) == 1)
    {
    }
    

我在这里看不到任何指针,除了您忽略提供的
scanf
void func (int x, int* apple)
{
    /* Dereference 'apple' for assignment. */
    *apple = 0;
}