Considere el siguiente programa en C:
#include <stdio.h> #include <string.h> struct s { int i; char *c; } str[] = {100, "eclasses", 200, "geeks",300, "data",400,"structure",500,"students"}; int main() { struct s *p = str; p += 1; printf("%s", p -> c); p--; printf("%s,", ++p -> c); printf(" %d, ", p[1].i); p=p+4; printf("%s", p -> c); }
¿Cuál de las strings estará en el resultado final del programa en C anterior?
Nota: esta pregunta es de selección múltiple (MSQ).
(A) geeksclasses
(B) 100
(C) estudiantes
(D) 200
Respuesta: (A) (C) (D)
Explicación: Aquí la estructura es el tipo de datos que contiene un tipo entero y una string. Dirección base de strings,
eclasses=1000 geeks=2000 data=3000 structure=4000 students=5000
p contiene la dirección base del tipo de datos str.
p=p+1
significa saltar al índice 0 al índice 1 <200,2000> en la array str.
Primera declaración de impresión, p->c apunta a la dirección base de la string y la declaración de impresión se imprime hasta que se encuentra nulo en la string.
geeks
Segunda declaración de impresión
p– significa volver al índice 0,
++p -> c significa recorrer la string un byte e imprimir la string restante
classes,
Tercera instrucción de impresión
p[1].i imprime el entero almacenado en el índice 1.
200,
Cuarta instrucción de impresión
p=p+4 significa ir al índice 4
p->c string de impresión almacenada en el índice 4
students
Por lo tanto, las opciones (A), (C) y (D) son correctas.
Cuestionario de esta pregunta
Comente a continuación si encuentra algo incorrecto en la publicación anterior
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