Habe da einige Fragen,
-
Hallo,
Ich bin die Tanja und 20Jahre alt. Ich habe mich damals zu dem Studiengang Technische BWL entschieden und gehofft dass mir mein Freund etwas bei der Technik hilft. Jedoch gibt es diesen nichtmehr.
Mein Problem ist nun, dass ich in zwei Wochen eine Klausur in Programmierung habe und mit einigen Fragen nicht klar komme.
Da wollte ich euch um eure Hilfe bitten.
eventuell hat ja wer msn, der einer Studentin helfen möchte
Als was kann man in C eine Zeichenkette darstellen ?
Mit welchem Operator kann man einzelne Teile eines struct-Verbundes auslesen?
Wie kann man verschiedene Variablen den selben Speicherbereich zuordenen?
-
Tanja86 schrieb:
Als was kann man in C eine Zeichenkette darstellen ?
zwischen zwei gänsefüsschen: char s[] = "hallo";
Tanja86 schrieb:
Mit welchem Operator kann man einzelne Teile eines struct-Verbundes auslesen?
mit einem punkt: int i = meinestruct.x;
Tanja86 schrieb:
Wie kann man verschiedene Variablen den selben Speicherbereich zuordenen?
mit dem keyword 'union':
union u { int a; char b; };
-
pale dog schrieb:
Tanja86 schrieb:
Als was kann man in C eine Zeichenkette darstellen ?
zwischen zwei gänsefüsschen: char s[] = "hallo";
und falls du mehr am Hintergrund interessiert bist: Eine Zeichenkette wird intern als Array von char-Werten gespeichert, wobei die '\0' als Endemarke verwendet wird. Das kannst du entwder als char-Array (wie Pale Dog vorgeführt hat) oder als char-Zeiger
char* s = "hallo";
ansprechen.
-
dringend noch ein buch nebendran oder sowas..
http://c-buch.sommergut.de/
-
Das kannst du entwder als char-Array (wie Pale Dog vorgeführt hat) oder als char-Zeiger char* s = "hallo"; ansprechen.
Da habe ich eine Frage! Wenn man z.B. die Zeichenkette länger aufbewahren will, wird man versuchen:
static char a[] = "hw"; static char *b = "hw";
Im ersten Fall bin ich sicher, dass die Zeichenkette nicht verloren geht. Im zweiten Fall bleibt mir eigentlich nur der Zeiger. Ist gesichert, dass Literale an ihrem Ort bleiben? (Man kann sie ja nicht eigens als static bestimmen)
-
Daß das Literal gültig bleibt, ist gesichert (zumindest solange du keinen Unfug damit treibst1). Daß der Zeiger immer auf dieses Literal zeigt, ist nicht gesichert (du kannst ihn auch später woanders hinbiegen).
(1)Der Compiler kann mehrfach verwendete Literale auch doppelt belegen. Und wenn du es dann ohne Einwände des Betriebssystems schaffst, den String zu verändern, hat das möglicherweise Auswirkungen auf andere Programmteile.
-
Danke, verstehe jetzt.
-
CStoll schrieb:
(1)Der Compiler kann mehrfach verwendete Literale auch doppelt belegen. Und wenn du es dann ohne Einwände des Betriebssystems schaffst, den String zu verändern, hat das möglicherweise Auswirkungen auf andere Programmteile.
gilt aber nur für sowas:
char *b = "hw";
bei dem:
char a[] = "hw";
dürfte das egal sein, weil's kopiert wird.
-
pale dog schrieb:
bei dem:
char a[] = "hw";
dürfte das egal sein, weil's kopiert wird.
Ja, aber das ist auch kein "String-Literal", sondern ein (drei-elementiges) char-Array, das mit dem Inhalt/Wert des String-Literals initialisiert wird.