Переменная указателя не обновляется для C - PullRequest
0 голосов
/ 27 сентября 2018
#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);
    }
}

Я пытаюсь найти в GCD 2 входа и сохраняю результат в переменной результата.Однако мой код, кажется, не работает, поскольку он хранит только один раз.enter image description here

Поскольку выходные данные предполагают, что мое окончательное значение для num1 должно быть 1, однако оно не сохраняется и остается равным 4.

1 Ответ

0 голосов
/ 27 сентября 2018

В функции gcdFinder изменить

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

на

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

Примечание:

В main правильно использовать &result, потому что result в main является int

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...