Adresse von konstanter Zahl Integer
-
Hallo,
ist es möglich von einer konstanten Zahl die Adresse an eine Funktion zu übergeben?
Also z.B. irgendwie so:
function(&5);
void function(int *zahl);
Also die Adresse von 5.
-
Nein, die Zahl hat (im C-Sinne) keine Adresse.
-
Geht mit (erst in C99 verfügbaren) compound Literalen:
void f1(int *i){ printf("%i",*i);} void f2(int i) { printf("%i",i);} int main() { f1(&(int){5}); f1((int[]){5}); f2(*(int[]){5}); return 0; }
-
Adressen von rvalues, interessant. Macht sich C über solche Sachen überhaupt Gedanken? Wie lange lebt denn ein Compound Literal?
-
Ganz normal, innerhalb vom compound statement auto, außerhalb static.
-
OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.
-
Bashar schrieb:
OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.
Sonst würde man es auch nicht referenzieren können.
-
Tachyon schrieb:
Bashar schrieb:
OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.
Sonst würde man es auch nicht referenzieren können.
Ach wäre doch eigentlich ganz cool:
int main() { ++1; printf("%d", 1+1); // 4 }
-
SeppJ schrieb:
Tachyon schrieb:
Bashar schrieb:
OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.
Sonst würde man es auch nicht referenzieren können.
Ach wäre doch eigentlich ganz cool:
int main() { ++1; printf("%d", 1+1); // 4 }
Igitt.

-
Tachyon schrieb:
Bashar schrieb:
OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.
Sonst würde man es auch nicht referenzieren können.
Dagegen mithilfe von Analogien zu C++ zu argumentieren kann ich mir sparen, oder?
-
Bashar schrieb:
Tachyon schrieb:
Bashar schrieb:
OK, es ist auch kein rvalue, wie ich angenommen hatte, sondern ein lvalue.
Sonst würde man es auch nicht referenzieren können.
Dagegen mithilfe von Analogien zu C++ zu argumentieren kann ich mir sparen, oder?
C kennt sowieso keine rvalues.
-
camper schrieb:
C kennt sowieso keine rvalues.
Der Standard erwähnt sie als Fußnote. Im allgemeinen Sprachgebrauch wurde die Unterscheidung zwischen lvalue und rvalue sogar für C eingeführt und sind heute im allgemeinen Informatiksprech für Sprachen mit Value-Semantik üblich.