C erlaubt nicht die Adresse eines Literals:
Der Operand des unären
&
Operators muss entweder ein Funktionsbezeichner, das Ergebnis eines[]
oder unary*
Operators, oder ein lvalue sein, der ein Objekt bezeichnet, das kein Bitfeld ist und nicht Mit demregister
Speicherklassenspezifizierer deklariert.
- C99 6.5.3.2/1
Literale gehören nicht zu den zulässigen Kategorien von Operanden. Dies ist eine formale Einschränkung der sprachkonformen Implementierungen, die keinen Code akzeptieren müssen, der sie verletzt, und sind erforderlich, um Diagnosen zur Beschreibung von Verstößen zu erstellen. C definiert nicht das Verhalten von Code, der eine Einschränkung verletzt.
Sie können etwas erreichen, was Ihnen ähnlich erscheint:
%Vor% Dadurch wird unter anderem das Risiko vermieden, einen Zeiger auf fehlausgerichteten Speicher zu dereferenzieren. C richtet den Speicher für die Variable u
so aus, dass alle Elemente an einer geeigneten Grenze ausgerichtet sind. Dies vermeidet eine mögliche Fallstricke mit jeder Annäherung entlang der Linien, die Sie ursprünglich versuchten.
Tags und Links string c pointers c89 memory-management