Pourquoi est-ce que les éléments suivants:argc/argv affecte l'octet nul dans les tableaux?
#include <stdio.h>
int main(int argc, char *argv[])
{
char array[3] = {'1', '2', '3'};
printf("%s\n", array);
return 0;
}
produit 1238À§Wˇ
("123" + quelques caractères aléatoires) comme prévu, alors que le même code avec:
int main(void)
au lieu de argc
, argv
produit: 123
(bien qu'il n'y ait pas de place pour l'octet nul).
Comment est-il que le manque de place pour un octet nul dans array
avec void
ne semble pas avoir d'importance?
Un comportement non défini peut différer d'un autre :). BTW, est-ce que 'array array [3] = {'1', '2', '3', '4'};' vraiment compile? – AlexD
Voulez-vous dire 'char array [3] = {'1', '2', '3'};'? Vous n'avez même pas alloué assez d'espace pour le ''4' '. C'est une violation de contrainte; un compilateur pourrait juste le traiter comme une erreur fatale. (gcc, malheureusement, ne le signale que par défaut.) –
Qu'avez-vous passé pour les arguments de la ligne de commande? – stackptr