¿Cuál es la diferencia entre la declaración de array de caracteres entre comillas simples y comillas dobles?

En C/C++, cuando una array de caracteres se inicializa con una string entre comillas dobles y no se especifica el tamaño de la array, el compilador asigna automáticamente un espacio adicional para el terminador de string ‘\0’. Por ejemplo, el siguiente programa imprime 6 como salida.

#include<stdio.h>
int main()
{
  // size of arr[] is 6 as it is '\0' terminated 
  char arr[] = "geeks";
  
  printf("%lu", sizeof(arr));
  
  return 0;
}

Producción :

6

Si el tamaño de la array se especifica como 5 en el programa anterior, el programa funciona sin ninguna advertencia/error e imprime 5 en C, pero provoca un error de compilación en C++.

// Works in C, but compilation error in C++
#include<stdio.h>
int main()
{
  // arr[] is not terminated with '\0'
  // and its size is 5
  char arr[5] = "geeks"; 
    
  printf("%lu", sizeof(arr));
    
  return 0;
}

Producción :

5

Cuando la array de caracteres se inicializa con una lista de caracteres separados por comas y no se especifica el tamaño de la array, el compilador no crea espacio adicional para el terminador de string ‘\0’. Por ejemplo, el siguiente programa imprime 5.

#include<stdio.h>
int main()
{
  // arr[] is not terminated with '\0' 
  // and its size is 5 
  char arr[]= {'g', 'e', 'e', 'k', 's'}; 
  
  printf("%lu", sizeof(arr));
  
  return 0;
}

Producción :

5

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 *