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; }