Par accident, j'ai trouvé que la ligne char s[] = {"Hello World"};
est correctement compilé et semble avoir le même traitement que char s[] = "Hello World";
. N'est pas le premier ({"Hello World"}
) un tableau contenant un élément qui est un tableau de char, de sorte que la déclaration pour s en lecture char *s[]
? En fait, si j'ai changer en char *s[] = {"Hello World"};
le compilateur accepte ainsi, comme prévu.
À la recherche d'une réponse, le seul endroit que j'ai trouvé qui c'est cette un mais il n'y a pas de citer le standard.
Donc ma question est, pourquoi la ligne char s[] = {"Hello World"};
est compilé bien que le côté gauche est de type array of char
et le côté droit est de type array of array of char
?
La suite est un programme de travail:
#include<stdio.h>
int main() {
char s[] = {"Hello World"};
printf("%s", s); // Same output if line above is char s[] = "Hello World";
return 0;
}
Merci pour les précisions.
P. S. Mon compilateur est gcc-4.3.4.