指针变量未针对C更新

时间:2018-09-27 04:57:15

标签: c pointers

#include <stdio.h>
void gcdFinder(int num1, int num2, int *result);
int main()
{
    int n1, n2, result;
    printf("Enter 2 numbers: \n");
    scanf("%d %d", &n1, &n2);
    gcdFinder(n1, n2, &result);
    printf("rGcd2(): %d\n", result);
    return 0;
}
void gcdFinder(int num1, int num2, int *result)
{
    printf("Initial : %d %d \n",num1,num2);
    *result=num1;
    if(num2 ==0 ){
        return;
    }else{
        gcdFinder(num2,(num1%num2),&result);
    }
}

我试图找到2个输入的GCD,并将结果存储到结果变量中。但是我的代码似乎不起作用,因为它只能存储一次。 enter image description here

输出显示我的num1最终值应为1,但未存储,仍为4。

1 个答案:

答案 0 :(得分:3)

在功能gcdFinder中更改

gcdFinder(num2,(num1%num2),&result);

gcdFinder(num2,(num1%num2), result);
                           ^
                       No & as result is already a pointer here

注意:

main中使用&result是正确的,因为result中的mainint