Kostenloser Elektrotechnik VIDEO-Kurs


mit VIDEO-Reihen zu den Themen:
Grundlagen der Elektrotechnik
Gleichstromnetze und Berechnungsverfahren
Wechselstrom und Drehstromnetze
Elektrische Maschinen
Regelungstechnik
Digitaltechnik
Mikrocontrollertechnik und C-Programmierung


Pointer und Arrays


In einem der vorherigen Artikeln hatten wir schon einmal Arrays kennengelernt.

Arrays sind nichts anderes als ein Feld mit Variablen gleichen Typs.

So erzeugt beispielsweise die Anweisung

int arr [10];

ein Feld mit 10 Integerwerten, die ich mit arr[0] bis arr[9] ansprechen kann.

Der Name des Arrays ist dabei ein Zeiger auf dieses Feld und zeigt auf das erste Feld des Arrays.

Man kann also den Namen des Arrays einem Pointer des gleichen Typs zuordnen und dann anschließend den Pointer dereferenzieren um den Inhalt zu erhalten.

Desweiteren ist es möglich, den Pointer zu inkrementieren, um so auf den nächsten Eintrag des Arrays zu verweisen.

Im folgenden Video zeige ich den Zusammenhang zwischen Array und Pointer an einem Beispiel.

Deine Aufgabe

Und hier nun wie im Video versprochen die 5 Zeilen Code.

i_ptr=Array;
for ( i=0;  i<10; i++)
{
printf(“%d\n”,*i_ptr++);

}

Anmerkung: i ist eine Variable vom Typ integer, die selbstverständlich noch vorher definiert werden muss.

  • Versuche einmal herauszufinden, was dieser Code genau macht und warum.
  • Überlege zunächst, bevor Du den Code compilierst und ausprobierst.

Im nächsten Artikel gibt es ein paar Anmerkungen zu diesen Zeilen.

Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]


Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)

Pointer und Arrays:
1 Star2 Stars3 Stars4 Stars5 Stars
4,83 von 5 Punkten, basieren auf 6 abgegebenen Stimmen.
Stimme jetzt ab ! (auf die Sternchen klicken)
Loading ... Loading ...




Ähnliche Artikel

Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:

Arrays In den vergangenen Folgen ging es ja schon um die Optimierung der Programmierung für unsren Kaffeeau...

Pointer in C – Lösung und Spielereien Nachdem ich die letzte Folge über Pointer und Arrays mit einer kleinen Aufgabe beendet habe, wird es...

Pointer in C – Lösung der Aufgabe In der vergangenen Folge gab es bereits eine kleine Einführung in das Thema Pointer in C. Heute werd...

Arduino Lernen – Digital Out mit SOS Nachdem im letzten Video die Grundlagen für das Ausgeben digitaler Signale über einen Port, Digital ...

Lösung der Aufgabe und SHIFT Operator In der letzten Folge habe ich das Element Array vorgestellt. Mit einem Array kann man eine Struktur ...

{ 4 Kommentare… sie unten lesen oder einen hinzufügen }

Johannes

printf(”%d\n”,*i_ptr++);
Da fängt “C” an. ;-)
Übrigens ein Super-Kurs. Ich hatte vor 3 Jahren einmal C an der Schule gelernt. Jetzt brauche ich es wieder. Mit Deinem Kurs bin ich super schnell wieder drin.

J. Martin

Wenn man einen Pointer gegeben hat und den Inhalt der Speicheradresse, auf die der Pointer zeigt nennt man das Dereferenzieren.

Verstehe das wer will. Vielleicht ist damit folgendes gemeint.

Beim dereferenzieren wird der Wert einer Speicherzellle geholt. Wo diese ist steht im Pointer. Deshalb heißt er auch Pointer weil er auf den Punkt zeigt. So wie ein Laserpointer.

Daniel

Hallo Wolfgang

Ich habe deinen Kurs abonniert, da man uns an der Hochschule ‘C’ nicht gut erklärt hat und ich muss sagen, ich bin begeistert.
Allerdings sollte ich anfügen, ich hatte ‘C’ nie in der Schule und stehe noch am Anfang .

Nun mein Problem:

Ich möchte mit einem Zeiger, dem ein String zugewiesen wurde, den Teil nach dem Doppelpunkt mit “FSV” überschreiben. Dazu muss der Zeiger irgendwo nochmal inkremetiert werden.

include
include
include

int main(void)
{
unsigned char *p_ptr =”Bester Verein:SGE”;
unsigned char=fussball;
p_ptr=fussball;
p_ptr=”F”;
p_ptr=”S”;
p_ptr=”V”;
while(‘:’ !=*p_ptr++)
{}
printf(“der Verein lautet jetzt %u \n”, fussball); / hier müsste der zeiger
möglicherweise inkrementiert
werden…/
}
return 0;

Ich komme nicht weiter. Wenn Du mir vielleicht weiterhelfen könntest.

Wolfgang Bengfort

Hallo Daniel,

bei
unsigned char=fussball;
müsste schon der Compiler meckern.

Einen Kommentar hinterlassen