Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger zuweisungen "richtig"

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
10.04.2006, 23:01 Uhr
Frido



Moin.
Ich habe die Aufgabe bekommen die Werte die oben Deklariert wurden auszugeben.
es sollten der Inhalt, Adresse und den Wert auf den es zeigt falls vorhanden.
Ich bin mir jetzt aber icht ganz so sicher mit den Inhalten kann mir jemand mal sagen ob das hier so korrekt ist.




C++:
/******************************************************************/
/******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXZEICHEN 100                                                //Definition des Arrays max.100 Zeichen

int main (int argc, char *argv[]) {
    int i, *first_i_ptr, first_i;
    char feld_strptr[MAXZEICHEN] = "Hello World!";                    
    char *strptr=feld_strptr;                                        
    char onechar;
    onechar = *strptr;                                                
    first_i_ptr = &i;                                                

/*****************Aufgabe b)***************************************/
    printf("Wert von 'i'           : %i , 'Adresse' : %p (Hex)\n",i,&i);
    printf("Wert von 'first_i'     : %i , 'Adresse' : %p (Hex)\n",first_i,&first_i);
    printf("Wert von 'first_i_ptr' : %i , 'Adresse' : %p (Hex) , 'Inhalt' : %i \n",*first_i_ptr, &first_i_ptr, first_i_ptr);
    printf("Wert von 'strptr'      : %c , 'Adresse' : %p (Hex) , 'Inhalt' : %i \n",*strptr, &strptr, strptr);
    printf("Wert von 'onechar'     : %c , 'Adresse' : %p (Hex)\n\n",onechar,&onechar);
/******************************************************************/

    for (i = 0, first_i_ptr = &i; i < 5; i++) {                        
        printf ("%c\n", *strptr);                                    
        strptr++;                                                    
    }
    printf (" (Erster Wert von i war %i, korrekt? NEIN!)\n\n", *first_i_ptr);    

/*****************Aufgabe b)***************************************/
    printf("Wert von 'i'           : %i , 'Adresse' : %p (Hex)\n",i,&i);
    printf("Wert von 'first_i_ptr' : %i , 'Adresse' : %p (Hex) , 'Inhalt' : %i \n",*first_i_ptr, &first_i_ptr, first_i_ptr);
    printf("Wert von 'strptr'      : %c , 'Adresse' : %p (Hex) , 'Inhalt' : %i \n\n",*strptr, &strptr, strptr);
/******************************************************************/
    
    for (i = 0, first_i = i; i < 5; i++) {                            
        printf ("%c\n", onechar);                                    
        onechar++;                                                
    }                                                            
    printf (" (Erster Wert von i war %i, korrekt? JA!)\n\n", first_i);
/*****************Aufgabe b)***************************************/
    printf("Wert von 'i'           : %i , 'Adresse' : %p (Hex)\n",i,&i);
    printf("Wert von 'first_i'     : %i , 'Adresse' : %p (Hex)\n",first_i,&first_i);
    printf("Wert von 'onechar'     : %c , 'Adresse' : %p (Hex)\n\n",onechar,&onechar);
/******************************************************************/
    return EXIT_SUCCESS;

}




Bearbeitung von 0xdeadbeef:

Ich hab die code-tags mal durch cpp-tags ersetzt, wegen so schön Farbe und bunt


--
http://spielwelt14.monstersgame.net/?ac=vid&vid=28103555

Dieser Post wurde am 11.04.2006 um 09:13 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.04.2006, 09:22 Uhr
0xdeadbeef
Gott
(Operator)


Wenn ich das richtig verstehe, ist das fast richtig, aber nicht ganz. Aller Vermutlichkeit nach ist es so gedacht:

C++:
    printf("Wert von 'first_i_ptr' : %p , 'Adresse' : %p (Hex) , 'Inhalt' : %i \n", first_i_ptr, &first_i_ptr, *first_i_ptr);
    printf("Wert von 'strptr'      : %p , 'Adresse' : %p (Hex) , 'Inhalt' : %s \n", strptr, &strptr, strptr);


Die Idee der ersten Zeile ist, dass der Wert eines Pointers sein numerischer Wert ist - also die Speicheradresse, auf die der Zeiger zeigt. Seine Adresse ist die Adresse, wo dieser Wert abgelegt ist, in diesem Fall auf dem Stack, und sein Inhalt ist die Zahl, auf die er zeigt. char-Pointer sind dabei eine Art Sonderfall, weil sie in C als Strings, also Zeichenketten benutzt werden, das heißt, mit dem Inhalt eines char-Pointers ist in aller Regel nicht nur das Zeichen, auf das er zeigt, sondern auch alle weiteren Zeichen bis zum ersten Null-Zeichen gemeint. Das %s-Format-Flag sorgt für eine entsprechende Interpretation seitens der Ausgabefunktion.

Ansonsten sieht das aber recht gut aus, wobei ich das ohne die Aufgabenstellung zu kennen, nicht 100%ig sicher sagen kann. Es ist ein etwas wildes Rumgespiele mit Pointern.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: