Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 <
020
15.01.2005, 18:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hmm also wenn du das was einlesen willst musst du zum einen schon mal mit angeben wie gross dein array sein soll an sonsten hast du keinen speicher bereitgestellt in den du schreiben darfst...

also z.b.

C++:
struct datei daten[100];



selbiges gilt für die members name adresse usw (so es arrays sein sollen)...

da name ein char-array ist (wenn du da zwischen die klammern noch ne zahl schreibst) ist der name des arrays quasi ein zeiger auf das erste element des arrays.... deshalb musst du bei scanf in diesem fall auch nicht die adresse angeben sondern den variablennamen direkt da dieser ja schon ein zeiger ist...

in deinem beispiel oben müsstest du die variante mit dem punkt und nicht die mit dem pfeil wählen da... mit dem pfeil würdest du den wert des ersten elementes von name bekommen und dieser würde dann als die adresse verwendet werden um dort dann den eingelesen string zu speichern... damit müllst du dann in speicher rum der dir nicht gehört und im besten falle stürzt nur dein programm ab...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
15.01.2005, 18:31 Uhr
Pablo
Supertux
(Operator)


Sicher bin ich aber nicht, aber du darfst arrays mit [] (also leere Klammern) nur wenn du sie gleich initialisierst, d.h.


C++:
char test[] = "rwhdhskshskshsdshdjds";



funktioniert, weil test gleich initialisiert wird. Aber


C++:
char test[];



reserviert kein Speicher. In fact, dein C Compiler wird das nicht kompilieren. Du musst eine Größe angeben.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
15.01.2005, 18:33 Uhr
~gast
Gast


danke für die ausführlichen erklärungen
ich weiß nicht warum aber ich hab so meine totalen probleme mit zeigern. es ist zwar leicht wenn man sich die erklärungen anschaut. aber das in die praxis umzusetzen ist wieder ein anderes thema

in meiner version
bei scanf verwende ich also den punkt
bei printf den pfeil
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
15.01.2005, 18:34 Uhr
~gast
Gast


@pablo
meine fragen beziehen sich hauptsächlich um zeiger und adressen usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
15.01.2005, 18:52 Uhr
Pablo
Supertux
(Operator)


Ok, wenn du eine Instanz eines structs (also eine Variable von typ struct xxx) dann musst du die Members des strcuts mit dem Punkt erreichen.


C++:
struct irgendeinstruct var;

var.member1 = ...
var.memebe2 = ...
usw.



Wenn du ein Zeiger auf eine Instanz hast, dann musst du auf die memebers mit -> zugreifen


C++:
struct irgendeinstruct *p_var;

p_var->member1 = ...
p_var->memebe2 = ...
usw.



das ist eben die Regel.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
15.01.2005, 19:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

in meiner version
bei scanf verwende ich also den punkt
bei printf den pfeil


äh nein nicht automatisch... wenn du einen string scanst (was du ihm sagst indem du ihm %s übergibst...) ist ja eine übergabe der adresse des arraynamens nicht nötig da der arrayname ja selber schon ein zeiger ist... deshalb hier nicht die adresse im gegensatz dazu wenn du z.b. ein int scanst...

wenn du mit printf einen string (char-array) ausgeben willst musst du ihm auch die adresse des chararrays geben... und deshalb auch hier in diesem beispiel mit dem punkt... (lass dich nicht verwirren das liegt ganz einfach daran das bei arrays der name selber schon ein zeiger ist und deswegen bei scanf keine adressübergabe notwendig ist)

würdest du bei printf den pfeil benutzen und ihm sagen er soll nen string ausgeben würde er den wert des ersten buchstaben als adresse des strings interpretieren den er ausgeben soll und dies dann auch veruchen, was dann im besten falle wieder nur zu einem absturz deines programmes führt...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: