Как я могу изменить значение int, используя функцию и указатель в C - PullRequest
0 голосов
/ 12 декабря 2018
    int boom_number;
    get_boom_number(boom_number);
    void get_boom_number(int *p)
{
    int x;
    p = &x;
    if(scanf("%d",&x)== 0)
        printf("Input Error!");
    else
        *p = x;
    return;
}

Я не хочу менять значение p на сканированное значение, что не так с моим кодом?

1 Ответ

0 голосов
/ 12 декабря 2018

Этот код демонстрирует правильный и неправильный способ изменения числа.

Функция get_number_A НЕ будет вносить значимых изменений в свой параметр, поскольку C использует «pass-by-copy»для его параметров.

Функция get_number_B внесет существенное изменение в свой параметр, поскольку передан указатель на переменную.

void get_number_A(int x)
{
    x = 5; // This change will NOT happen outside of this function.
}

void get_number_B(int* p)
{
    *p = 7; // This change will happen outside of this function.
}

int main(void)
{
    int number = 0;

    get_number_A(number);
    printf("A.) The number is: %d; it was NOT modified.\n", number);

    get_number_B(&number);
    printf("B.) The number is: %d; it was SUCCESSFULLY modified.\n", number);

    return 0;
}

Просмотреть этот код в IDEOne

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