PUERTA | PUERTA CS 2018 | Pregunta 52

Considere el siguiente programa en C:

#include <stdio.h>
void fun1(char *s1, char *s2) {
  char *temp;
  temp = s1;
  s1 = s2;
  s2 = temp;
}
void fun2(char **s1, char **s2) {
  char *temp;
  temp = *s1;
  *s1 = *s2;
  *s2 = temp;
}
int main() {
  char *str1 = "Hi", *str2 = "Bye";
  fun1(str1, str2);
  printf("%s %s", str1, str2);
  fun2(&str1, &str2);
  printf("%s %s", str1, str2);
  return 0;
}

La salida del programa anterior es

(A) Hola Adiós Hola
(B) Hola Adiós Hola Adiós
(C) Adiós Hola Hola Adiós
(D) Adiós Hola Adiós Hola

Respuesta: (A)
Explicación: fun1(char *s1, char *s2) El
alcance de la función anterior es local , por lo que el valor cambiado aquí no afectará a los parámetros reales. Entonces, los valores serán ‘Hola, adiós’.
 
fun2(char **s1, char **s2)
En esta función, el valor es puntero a puntero, por lo que cambia el puntero del valor real. Entonces los valores serán ‘Bye Hi’

La respuesta es ‘Hola, adiós, hola’

 
La opción (A) es correcta.

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 *