Literales compuestos en C

Considere el siguiente programa en C.

// Please make sure that you compile this program
// using a C compiler, not a C++ compiler (Save your
// file .cpp). If using online compiler, select "C"
#include <stdio.h>
int main()
{
   // Compound literal (an array is created without
   // any name and address of first element is assigned
   // to p.  This is equivalent to:
   // int arr[] = {2, 4, 6};
   // int *p = arr;
   int *p = (int []){2, 4, 6};
  
   printf("%d %d %d", p[0], p[1], p[2]);
  
   return 0;
}

Producción:

2 4 6

El ejemplo anterior es un ejemplo de literales compuestos. Los literales compuestos se introdujeron en el estándar C99 de C . La función de literales compuestos nos permite crear objetos sin nombre con una lista dada de valores inicializados. En el ejemplo anterior, se crea una array sin ningún nombre. La dirección del primer elemento de la array se asigna al puntero p.

¿Cuál es el uso de ello?
Los literales compuestos se usan principalmente con estructuras y son particularmente útiles cuando se pasan variables de estructuras a funciones. Podemos pasar un objeto de estructura sin definirlo.
Por ejemplo, considere el siguiente código.

// Please make sure that you compile this program
// using a C compiler, not a C++ compiler (Save your
// file .cpp). If using online compiler, select "C"
#include <stdio.h>
  
// Structure to represent a 2D point
struct Point
{
   int x, y;
};
  
// Utility function to print point
void printPoint(struct Point p)
{
   printf("%d, %d", p.x, p.y);
}
  
int main()
{
   // Calling printPoint() without creating any temporary
   // Point variable in main()
   printPoint((struct Point){2, 3});
  
   /*  Without compound literal, above statement would have
       been written as
       struct Point temp = {2, 3};
       printPoint(temp);  */
  
   return 0;
}

Producción:

2, 3

Este artículo es una contribución de Shivam Gupta . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

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 *