Рубрики

C | Расширенный Указатель | Вопрос 5

Предсказать выход

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

  

void fun(char** str_ref)

{

    str_ref++;

}

  

int main()

{

    char *str = (void *)malloc(100*sizeof(char));

    strcpy(str, "GeeksQuiz");

    fun(&str);

    puts(str);

    free(str);

    return 0;

}

(A) GeeksQuiz
(B) eeksQuiz
(C) стоимость мусора
(D) Ошибка компилятора

Ответ: (А)
Объяснение: Обратите внимание, что str_ref является локальной переменной для fun (). Когда мы делаем str_ref ++, это только изменяет локальную переменную str_ref.

Мы можем изменить указатель str, используя оператор разыменования *. Например, следующая программа печатает «eeksQuiz»

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void fun(char** str_ref)
{
    (*str_ref)++;
}

int main()
{
    char *str = (void *)malloc(100*sizeof(char));
    strcpy(str, "GeeksQuiz");
    fun(&str);
    puts(str);
    free(str);
    return 0;
}

Тест на этот вопрос

Рекомендуемые посты:

C | Расширенный Указатель | Вопрос 5

0.00 (0%) 0 votes