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