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.
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