C Tutorials ****

yax

Erfahrenes Mitglied
Hallo,

also ich habe jetzt angefangen C zu lernen (so circa seit 3/4 Wochen), und ich verstehe auch voll viel, nur ich habe Probleme mit den Zeigern. In den Büchern die ich schon mal über Zeiger gelesen habe, finde ich alle sehr umständlich beschrieben und es werden so blöde Fachbegriffe benutzt. Mir ist natürlich klar, das Fachbegriffe verwendet werden müssen, doch es kommen oft begriffe vor die alles noch verwirrender machen.
Deshalb wollte ich fragen ob jemand gute Tutorials, am besten Video-tutorials, kennt die mir vielleicht helfen könnten?

Gruß :)

PS: Danke schon mal im voraus. :)
 
Hi,
ich hoffe, dass ich das jetzt noch richtig zusammen bekomme. :)

Verstehst Du jetzt nicht, wann man Array benuzt und wann Zeiger und was Zeiger bei einer Funktion bringen?

Zeiger bei Funktionen zeigen (wie es der Name schon sagt) auf den Wert, der eingelesen werden soll. Dies ist von Vorteil, wenn man bei komplexeren Programmen Speicherplatz sparen will, oder einfach nur Ordnung in der Programmierung beibehalten will. D.h. wenn Du n-Kopien anlegst von z.B. einem Kunden, dann wird es schwierig, wenn man seinen Namen ändern will. Hier stören die vielen Kopien und deshalb "zeigt" man auf den Kunden, denn dann muss man diesen nur einmal ändern und es wird in der weiteren Programmierung richtig übernommen.

Bei Arrays ist es egal, ob man Zeiger oder ein Array verwendet. Bei dem Array-Inhalt array[4]="test" wird bei *array "t" und bei array[0] "t" ausgegeben. Der Zeiger zeigt in diesem Fall auf das allererste Element und kann durch "+1" bewegt werden.
 
Erks hat gesagt.:
Dies ist von Vorteil, wenn man bei komplexeren Programmen Speicherplatz sparen will, oder einfach nur Ordnung in der Programmierung beibehalten will
Hmm, naja ich würde es so beschreiben:

Wenn du bei einer Funktion eine Variable als Zeiger übergibst, so kannst du in der Funktion den Wert direkt ändern.
Ansonsten wird eine Kopie innerhalb der Funktion angelegt, sodass du die Variable zwar ändern kannst, aber die originale wird nicht geändert.

Bei Arrays verwendet man Zeiger, damit diese dynamisch sind, sprich du kannst deren Größe während der Laufzeit bestimmen.
Bei "normalen" Arrays musst du zur Kompilierzeit die Größe angeben.
 
Danke für die Antworten, doch Arrays kann ich voll gut, aber ich kapiere zum Beispiel das mit dem Zeiger als Rückgabewert nicht, oder Zeiger-Arrays, Zeiger auf Arrays, Zeiger auf Funktionen. Also "nur" dass verstehe ich nicht, sonst aber alles.(Ich mein soviel bleibt ja nicht mehr übrig :D)

Gruß.
 
Okay, also ich hab jetzt einfach mal drauf los programmiert, doch irgendwie bekomme ich immer einen Fehler. Aber warum ?

Hier mein Code:
Code:
#include<stdio.h>
#include <stdlib.h>

int *CreateAndWriteIntArray(int g) {
    int array[g];
    int zahl;
    
    int i;
    for(i = 0; i < g; i++) {
          printf("Bitte Wert %d eingeben: ", i);
          scanf("%d\n",&array[i]);
          
          }
          return array;
}

void ReadIntArray(int g, int *array) {
     int i, *pval2;
     pval2 = array;
     for(i = 0; i < g; i++) {
           printf("Array : %d\n", *(pval2+i));
           }
}

int main(void) {
    int g, *pval1, *pval2;
    pval1 = &g;
    printf("Wie groß soll das Array werden: ");
    scanf("%d\n",pval1);
    
    pval2 = CreateAndWriteIntArray(*pval1);
    
    ReadIntArray(*pval1,pval2);
    
    return EXIT_SUCCESS;
}

Kann mir jemand helfen?

Gruß yax. :)
 
Welchen FEHLER?

Viele schreiben immer nur von einem Fehler, nur nicht von welchem!
Sorry, aber das musste sein.
 

Neue Beiträge

Zurück