Voici une manière pas si commun d'initialisation du pointeur:initialisation d'un pointeur sur les littéraux composés en C
int *p = (int[10]){[1]=1};
Ici, point de pointeur vers littéraux composés.
#include <stdio.h>
int main(void)
{
int *p = (int[10]){[1]=1};
printf("%d\n", p[1]);
}
Sortie:
1
Ce programme est compilé et exécuté bien dans G ++ compilateur.
Ainsi,
Est-ce la bonne façon d'initialiser un pointeur vers littéraux composé? ou
Est-ce que le comportement non défini initialise le pointeur sur les littéraux composés?
Vous pouvez l'initialiser par: 'int p [10],' et après set 'p [1] = 1' (si vous le codage proprement) – YaatSuka
Il n'est pas un "élément de tableau anonyme", mais un" littéral composé "qui se trouve être un tableau. Demandons autrement: y a-t-il * un * moyen d'utiliser un * composé littéral * comme celui-ci sans jamais le convertir en pointeur? Non. La seule question est la durée de vie du littéral composé. –
"Est-ce la bonne façon d'initialiser le pointeur?" Cela dépend de ce que vous voulez faire avec. Le code est 100% équivalent à 'int arr [10] = {[1] = 1}; int * p = arr; Soit est parfaitement bien si vous voulez un tableau avec portée locale. – Lundin