Hilfe bei Pointer ?



  • Hallo,
    Ich habe folgendes Problem .
    folge Aufgabe:
    Schreiben Sie ein C-Programm, dass ein char-Feld mit 10
    Elementen in main() definiert und mit den Zeichen '0' bis '9'
    vorinitialisiert. Erzeugen Sie dann ein char-Pointer-Feld, dessen
    Zeiger auf die einzelnen Elemente des char-Feldes verweisen.
    Übergeben Sie das char-Pointer-Feld an eine selbst erstellte
    Funktion ausgabe(). In dieser Routine sollen die Feldelemente des
    Ziffern-Feldes über die zugehörigen Zeiger jeweils als char und als
    int ausgegeben werden. Geben Sie weiterhin die Adresse der
    Ziffern aus (long int) .
    .......................................
    so ich dachte mal so:

    [code]

    #include <stdio.h>

    int main()

    {

    char feld[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

    char *pointer;

    pointer=&feld[10];

    }

    int ausgabe(char *pointer)

    {

    printf ("Ausgabe Char=%s Int %d Adressen %p",pointer,pointer,&pointer);

    }

    aber funktioniert nicht so ganz



  • Du sollst ein Array von 10 Pointern machen.



  • und die Zahl 0 ist etwas anderes als das Zeichen '0' 😉



  • hallo hab noch wenig ahnung in c deswegen
    also ich lass das erstmal weg mit der funktion ausgabe.

    dann habe ich folgendes gemacht .

    ///////////////////////////////////
    #include <stdio.h>
    #include <conio.h>

    int main()
    {

    char feld[10]={0,1,2,3,4,5,6,7,8,9}; // hier habe ich das char feld mit den 9 elementen und intialiesiere mit den den zeichen 0-9 richtig?

    char *pointer[10]; // hier habe ich den zeiger auf char festgelegt

    pointer[10]=&feld[10]; // hier gebe ich dem zeiger den inhalt von feld richtig?

    printf("\nAdr: %s int: %d adr:%p",pointer[10],pointer[10],&pointer);

    // hier gebe ich dann die zeichen als char , int und als adresse aus richtig ?

    getch();

    }

    danke gruss peer



  • peerffm schrieb:

    char feld[10]={0,1,2,3,4,5,6,7,8,9}; // hier habe ich das char feld mit den 9 elementen und intialiesiere mit den den zeichen 0-9 richtig?

    Nicht ganz, du initialisierst mit den Zeichen ASCII 0 bis ASCII 1. Wenn du mit den Ziffernsymbolen initialisieren willst, brauchst du "char feld[10]={'0','1',/.../,'9'};"

    char *pointer[10]; // hier habe ich den zeiger auf char festgelegt

    Nein, das ist ein Array von 10 Zeigern, die jeder auf ein char verweisen können.

    pointer[10]=&feld[10]; // hier gebe ich dem zeiger den inhalt von feld richtig?

    Wenn man's so nimmt, ja - aber pointer[10] und feld[10] liegen jeweils direkt außerhalb des definierten Array-Bereiches (der Index läuft von 0 bis Größe-1).

    printf("\nAdr: %s int: %d adr:%p",pointer[10],pointer[10],&pointer);
    // hier gebe ich dann die zeichen als char , int und als adresse aus richtig ?

    %s = Zeichenkette
    %d = Integer (in dem Fall der int-Wert deiner Adresse
    %p = Pointer (in dem Fall die Adresse der Variablen "pointer" auf dem Stack)



  • Schonmal was von schleifen(Zyklen),und zählervariablen gehört???
    tip:
    pointer[i]=&feld[i]...
    machts jetzt klick?
    ...



  • Sorry 🙄 ! Aber ich wollte mal wieder was in C schreiben 🙄 !

    #include <stdio.h>
    
    void ausgabe(char *pfeld, int anz);
    
    void ausgabe(char *pfeld, int anz)
    {
    
    	int i;
    
    	for (i=0;i<anz;i++)
    		printf("%c %d %d\n", *(pfeld+i), *(pfeld+i), pfeld+i);
    }
    
    int main(char *argv[], int argc)
    {
    
    	char feld[10]={'0','1','2','3','4','5','6','7','8','9'};
    	char *pfeld[10];
    	int i;
    
    	for (i=0;i<10;i++)
    		pfeld[i]=&feld[i];
    
    	ausgabe(*pfeld,10);
    
    return 0;
    }
    

Anmelden zum Antworten