Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

224
Views
¿Las cadenas definidas están configuradas en todos los valores NULL?

Podría haber jurado que leí que una cadena que se definió pero no se inicializó se configuró en todos NULL. En otras palabras, que

 char string[10];

constaba de 10 caracteres nulos, y que

 char string[10] = "Kevin";

consta de las letras 'K', 'e', 'v', 'i', 'n' y cinco nulos.

Es esto cierto:

  1. ¿Siempre?
  2. A veces, dependiendo del compilador?
  3. ¿Nunca?
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

en otras palabras, esa cadena char[10]; constaba de 10 caracteres nulos,

Eso depende de dónde y de la variable.

 char here_yes[10]; // 10 '\0' characters int main() { char here_no[10]; // 10 unknown garbage values static char but_here_also_yes[10]; // also 10 '\0' characters }

y ese char string[10] = "Kevin"; consta de las letras 'K', 'e', 'v', 'i', 'n' y cinco nulos. ¿Es esto cierto: siempre?

Sí. Si inicializa parcialmente una cadena o una variable, el resto se rellena con '\0' o ceros.

 char this_has_10_nulls[10] = ""; int main() { char this_has_ab_followed_by_8_nulls[10] = { 'a', 'b' }; static char this_has_Kevin_followed_by_5_nulls[10] = "Kevin"; }
over 4 years ago · Santiago Trujillo Report

0

Si no hay un inicializador presente (como en su primer ejemplo), todos los elementos de la matriz tendrán valores indeterminados. De este Proyecto de Norma C11 :

6.7.9 Inicialización

…
10 Si un objeto que tiene duración de almacenamiento automático no se inicializa explícitamente, su valor es indeterminado.

Sin embargo, si proporciona algún tipo de inicializador (como en su segundo ejemplo), cualquier elemento en la matriz que no esté configurado explícitamente se inicializará a cero. De unos pocos párrafos más adelante en el Estándar:

21 Si hay menos inicializadores en una lista entre llaves que elementos o miembros de un agregado, o menos caracteres en una cadena literal utilizada para inicializar una matriz de tamaño conocido que elementos en la matriz, el resto del agregado se inicializará implícitamente igual que los objetos que tienen una duración de almacenamiento estática.

(Tenga en cuenta que un char de duración de almacenamiento estático se inicializará a cero).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!