Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

06.07.2007, 20:48

Um das nochmal klarzustellen ...

Zitat von »"Phili"«

Ein Pointer kann nur auf eine Variable und nicht auf einen Wert zeigen.

Das ist nicht richtig.
Beispiel:

C-/C++-Quelltext

1
char* data = new char[1000];


data zeigt auf keine Variable.

Zeiger zeigen auf eine bestimmte Adresse im Speicher. Variablen sind nur Hilfsmittel, um Speicherbereiche in Objekte zu verpacken.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

06.07.2007, 20:56

Zitat von »"David Scherfgen"«


Zeiger zeigen auf eine bestimmte Adresse im Speicher. Variablen sind nur Hilfsmittel, um Speicherbereiche in Objekte zu verpacken.


Danke! :)
@D13_Dreinig

Phili

unregistriert

13

06.07.2007, 21:14

@David Scherfgen
Das ist aber wirklich definitionssache. Im Endeffekt ist eine Variable ja nichts als ein Speicherbereich. So würd ich das zumindest formulieren...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

06.07.2007, 23:02

Zitat von »"wiki"«


In computer source code, a variable name is one way to bind a variable to a memory location; the corresponding value is stored as a data object in that location so that the object can be accessed and manipulated later via the variable's name.


Eine Variable wird über einen Namen an einen Speicherbereich gebunden, ist aber nicht der Speicherbereich auf den ein Zeiger zeigt. Eine Referenz hingegen ist ein Alias für eine Variable, also eine andere Bezeichnung und referenziert somit die Variable welche an den Speicherbereich gebunden ist!
@D13_Dreinig

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

15

07.07.2007, 18:17

Wo werden dann diese String lteralen hinterlegt?
Ich benutze das zwar net, da es mir unlogisch erschien, als ich c++ gelernt hab, aber es wäre trotzdem interessant zu wissen. Ihr hab gesagt im Statischen Speicher. aber wo ist der? Auf dem Stack oder auf dem Heap?


Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

07.07.2007, 18:21

Zitat von »"Faule Socke"«

Ich benutze das zwar net, da es mir unlogisch erschien, als ich c++ gelernt hab, aber es wäre trotzdem interessant zu wissen.


unlogisch?

C-/C++-Quelltext

1
  "hallo welt!"; // <- das ist ein string literal


ich wette du verwendest string literale :P

Zitat von »"Faule Socke"«

Ihr hab gesagt im Statischen Speicher. aber wo ist der? Auf dem Stack oder auf dem Heap?


weder noch.
es gibt in C++ 3 speicherklassen: auto (stack), static (der statische speicher eben) und den free store (heap).

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

17

07.07.2007, 18:36

Zitat von »"grek40"«

Das besondere an C-Strings ist einfach, dass viele Funktionen eben nicht nur dieses erste D verarbeiten sondern solange alle darauffolgenden Buchstaben ebenfalls beachten, bis der Wert 0 (bzw. '\0') kommt - das wird automatisch hinter dein ';' gesetzt.


Soweit ich weiß, wird die '\0' hinter das letzte Zeichen und nicht hinter das ';' gesetzt.

"Hallo"; => 'H' 'a' 'l' 'l' 'o' '\0';

__________

Wozu ist denn der statische Speicher da?

Mit freundlichen Grüßen,
WhiteMike

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

18

07.07.2007, 19:14

Da hast du recht. Im Ursprunspot lautet der String jedoch

"Das_Kleine_C++;"

=> Die 0 wird nach dem ";" gesetzt. Am Ende des Strings eben

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

19

07.07.2007, 23:29

Oh ich dachte ein string-literal wäre das:

C-/C++-Quelltext

1
char *pc = "Hallo Welt";



Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

20

08.07.2007, 00:01

Nein, der stringliteral ist nur das "Hallo Welt".
@D13_Dreinig

Werbeanzeige