Inicialización de variables globales y estáticas en C

Prediga la salida de los siguientes programas en C.

// PROGRAM 1
#include <stdio.h>
#include <stdlib.h>
  
int main(void)
{
   static int *p = (int*)malloc(sizeof(p));
   *p = 10;
   printf("%d", *p);
}
// PROGRAM 2
#include <stdio.h>
#include <stdlib.h>
int *p = (int*)malloc(sizeof(p));
  
int main(void)
{
    *p = 10;
    printf("%d", *p);
}

Ambos programas anteriores no se compilan en C. Obtenemos el siguiente error de compilación en C.

error: initializer element is not constant

En C, el propio compilador inicializa las variables estáticas y globales. Por lo tanto, deben inicializarse con un valor constante.

Tenga en cuenta que los programas anteriores se compilan y funcionan bien en C++, y producen la salida como 10.

Como ejercicio, prediga la salida del siguiente programa tanto en C como en C++.

#include <stdio.h>
int fun(int x)
{
    return (x+5);
}
  
int y = fun(20);
  
int main()
{
    printf("%d ", y);
}

Este artículo es una contribución de Shankar Shastri. 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 *