Prediga la salida de los siguientes programas.
Nivel de dificultad: Pregunta de novato 1
c
#include<stdio.h> int main() { typedef int i; i a = 0; printf("%d", a); getchar(); return 0; }
Salida: 0
No hay problema con el programa. Simplemente crea un tipo i definido por el usuario y crea una variable a de tipo i .
Pregunta 2
c
#include<stdio.h> int main() { typedef int *i; int j = 10; i *a = &j; printf("%d", **a); getchar(); return 0; }
Salida: Error del compilador -> Inicialización con tipo de puntero incompatible.
La línea typedef int *i convierte a i en type int *. Entonces, la declaración de a significa a es un puntero a un puntero. El mensaje de error puede ser diferente en diferentes compiladores.
Una posible solución correcta de este código se encuentra en la Pregunta 4. Ahora también intente esto:
C
#include <stdio.h> int main() { typedef int *i; int j = 10; int *p = &j; i *a = &p; printf("%d", **a); getchar(); return 0; }
Pregunta 3
c
#include<stdio.h> int main() { typedef static int *i; int j; i a = &j; printf("%d", *a); getchar(); return 0; }
Salida: Error del compilador -> Múltiples clases de almacenamiento para a.
En C, typedef se considera como una clase de almacenamiento . El mensaje de error puede ser diferente en diferentes compiladores.
Pregunta 4
c
#include<stdio.h> int main() { typedef int *i; int j = 10; i a = &j; printf("%d", *a); getchar(); return 0; }
Resultado:
10
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
Referencias:
http://www.itee.uq.edu.au/~comp2303/Leslie_C_ref/C/SYNTAX/typedef.html
http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp? topic=/com.ibm.vacpp6m.doc/language/ref/clrc03sc03.htm
http://msdn.microsoft.com/en-us/library/4x7sfztk.aspx
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