
Envoyé par
berg
Cela ne met pas le pointeur a NULL ...
Cela sert tout simplement a reserver un morceau de memoire egale a 0 ou p pointe.
1 2 3 4 5 6 7 8
| int main() {
int *p = (int[]){0};
if (p == NULL) printf("NULL\n");
else printf("%d\n", *p);
return 0;
} |
cela me donne :
Je ne suis pas sûr que ce code soit correct. Je pense que c'est plutôt une extension de gcc.
De plus je suis sous linux, je compile avec -Wall je n ai pas aucun warning.
Insuffisant :
-Wall -Wextra -ansi -pedantic
Moi je trouvais que c etait une maniere elegante de creer un pointeur sur entier et de l initialiser a 0...
1 2 3 4 5
|
{
int x = 0;
char *p = &x;
} |
Je ne sais pas si c'est élégant, mais c'est au moins correct. Ce que tu veux faire est une sorte d'extension du mécanisme de définition de pointeurs sur chaines, via un tableau anonyme.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include <stdio.h>
int main (void)
{
int *p = (int[]) { 123, 456 };
if (p == NULL)
printf ("NULL\n");
else
{
printf ("%d\n", p[0]);
printf ("%d\n", p[1]);
}
return 0;
} |
L'idée est intéressante, mais à ma connaissance, ce n'est pas supporté par le langage C.
Partager