Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Zeiger

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 <
000
31.05.2004, 16:47 Uhr
~ibot
Gast


Ich habe einige Fragen zu diesem Quelltext:


C++:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

#define mcout cout<<'\n'

void main()
{
    system("CLS");
    char     sFld[]      = "DCBA";
    int     iFld[5]     = {1,2,3,4,5};
    char *p0, *p1;

    mcout << iFld;             // Ausgabe => 0012F568
    mcout << *(iFld+1);     // Ausgabe => 2
    mcout << iFld+2;        // Ausgabe => 0012F570
    mcout << sFld;          // Ausgabe => DCBA
    mcout << &sFld[0];    // Ausgabe => DCBA
             mcout << &sFld[1];    // Ausagbe => CBA




- iFld+2; Warum wird die Adresse nur um 3 Byte erhöht obwohl es sich um Integer-Typ handelt? Müsste nicht 12 Byte weitergezählt werden?

- sFld; Warum wird hier der Komplette Inhalt des Feldes angezeigt und nicht die Adresse des ersten Elements, so wie es bei iFld der Fall ist??
Ich war bisher überzeugt dass man den Inhalt eines Arrays nur mittels Zählschleife ausgeben kann :-/

- &sFld[1]; Hier wird doch demonstrativ die Adresse verlangt, oder? Warum wird dann der Inhalt ab dem 2. Element ausgegeben?

Würde mich über eure Antworten freuen :-)

Gruß

Dieser Post wurde am 31.05.2004 um 18:15 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.05.2004, 18:49 Uhr
(un)wissender
Niveauwart


zu iFLD+2, es müsste acht weitergezählt werden und nicht zwölf, dass wird es auch, die Ausgabe erfolgt Hexadezimal 8+8 = 16 in hex 10.

zu den anderen:
cout verhält sich so, dass es bei einem char* nicht die Adresse ausgibt, sondern den String.
Kannste ändern, indem du das z.B. vor der Ausgabe in einen int* castest.


Bearbeitung:

[pablo]
Es muss int main() heißen und include <iostream> (ohne .h)
[/pablo]


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 31.05.2004 um 18:50 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: