C | Puntero avanzado | Pregunta 5

Predecir la salida

#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) Valor basura
(D) Error del compilador

Respuesta: (A)
Explicación: tenga en cuenta que str_ref es una variable local para fun(). Cuando hacemos str_ref++, solo cambia la variable local str_ref.

Podemos cambiar el puntero str usando el operador de desreferencia *. Por ejemplo, el siguiente programa imprime «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;
}

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *