Traducción manuscrita de las preguntas del examen de idioma C de nivel 2
Lo primero que hay que entender es la matriz de punteros de caracteres *s[4], que apunta a la primera dirección de estas cuatro cadenas.
Por ejemplo, S[0] almacena la dirección del primer carácter 't' de la primera cadena "árbol", pero debe entenderse que está en la memoria.
Se almacenan así:
S[0] apunta a la primera dirección del carácter 't', lo que significa que S[0] almacena la dirección de memoria del carácter 't' '. Pero no lo hagas.
Olvidé que el terminador de cadena '\0' se agrega automáticamente al final de la cadena. Si no comprende esta pieza musical
También puede leer esta sección en los primeros libros en lenguaje C.
Programa de análisis:
(1)? =?0;? p2 = S[0];? ¿p1? =?p2? ?0;?
Explique aquí que los punteros de carácter P1 y P2 apuntan al carácter 't', * p 1 = * p2 = 't'.
Al ejecutar el bucle while se cumple la condición del bucle, *p2=*p1, es decir, el valor de *p1 se asigna a *p2, porque son ambos.
Apunta al carácter "t", por lo que no cambia su valor. Luego p1, p2, lo que significa que tanto p1 como p2 apuntan al siguiente carácter 'r'
Aún sin cambios. Etcétera. Cuando tanto p1 como p2 apuntan al carácter '\0', el ciclo while finaliza y luego se ejecuta.
*p2 ='\0', pero *p2 ya es igual a '\0', por lo que permanece sin cambios.
Eso significa yo. =?0El bucle for finaliza una vez y la cadena "árbol" no ha cambiado.
(2)?¿Yo? =?1;p2 = S[1];? ¿p1? =?p2? ?1;?
Ejecutar un bucle while, el primer bucle es obviamente *p2? =?*p1, porque *p1='l', *p2='l', es decir, cambia 'f' en la memoria a 'l'. Cuando se ejecuta p1, los cambios de memoria de P2 son los siguientes:
De manera similar a la asignación de intercambio, el puntero se mueve al siguiente bit y el ciclo while finaliza.
Hay otro punto muy importante que conviene recordar. El ciclo while termina, pero *p2='\0 '.
Al valor señalado por p2 se le asignará el valor '\0'. ¿p1? =?p2? ?I;También debes prestar atención al movimiento del puntero P1.
¿A qué personaje apunta p1?
En lenguaje C, si hay '\0' en la cadena, solo se generarán los caracteres antes de '\0' cuando se generen los caracteres.
Por ejemplo, si se genera la cadena "ass\0s\0", el resultado será "ass".
(3)¿Yo? =?2?3, no lo analizaremos aquí, igual que arriba.