Ceci est une question de la version la plus récente de "The C++ Programming Language" de Stroustrup. J'ai réfléchi à cela dans ma tête ces deux derniers jours.TCPL 5.9.9 (C++): Où serait-il logique d'utiliser un nom dans son propre initialiseur?
La seule chose que je peux venir avec, (ce qui est probablement incorrect) est quelque chose comme ceci:
int* f(int n) {
int* a = &a - n * sizeof(int*);
return a;
}
Mon intention est d'obtenir l'adresse de quelque chose plus haut sur la pile. Cela a-t-il un sens? Est-ce que quelqu'un d'autre a d'autres réponses? Rappelez-vous, c'est dans le chapitre 5 (pointeurs, tableaux et structures) donc la réponse ne devrait pas impliquer quelque chose plus tard dans le livre.
Qu'est-ce qui vous fait penser que cela devrait * toujours * avoir du sens? : p – jalf
Eh bien, comme un code portable, le vôtre est U.B. Je suppose que cela signifie que cela n'a pas de sens :) –
Pour être plus précis: "pile" est un détail d'implémentation; il n'y a pas une telle chose en standard C++. Il a seulement "stockage automatique", sans préciser comment il est mis en œuvre. De plus, l'arithmétique du pointeur qui résulte en un pointeur vers le premier élément d'un tableau (une seule variable peut être traitée comme un tableau à un élément à cette fin) décrémenté est U.B. –