Forum: PC-Programmierung Zeiger & Array


von balou M. (fujitif)


Angehängte Dateien:

Lesenswert?

Hallo an alle

ich habe eine frage zu Array und Zeiger in MC
es mir aus der vorlesung bekannt dass man mit mit zeiger und array so um 
geht ,

- so definiert man ein Array :

> int Array[32] ;
dh Array mit 32 int -Variablen ( Array[0]..... Array[31] )

>int *Array[20];
dh ein Array mit 20 zeigern auf int Variable

also mit * liest man bzw zeigt man der inhalt von der zelle . oder habe 
ich die geschichte falsch verstanden?

jetzt habe ich mit c code für MC von freescale (MPC5604..) was zu tun.

der code ist wie hier in diesem forum gereglt als Anhang . kann jemand 
mir eklären wenn die "if"  true ist dann wird die kft PCR durchgefürt
und den STATE auf 0x0400uL oder 0x0800uL (falls es if false ist )

und jetzte wenn ich mit der maus in der Entwicklungsumgebung auf die 
PCR_PA_AM2 gehe , erscheint mir ein fester mit sowas

((*(volatile struct PCR_tag *) 0xC3F90040).PCR[PCRCh].R = 0x0800uL)

jetzt wie kann ich diese zeile verstehen , ist das ein zeiger ? was 
heißt den Punkt vordem PCR ?

von Karl H. (kbuchegg)


Lesenswert?

balou Mammadou schrieb:

> - so definiert man ein Array :
>
>> int Array[32] ;
> dh Array mit 32 int -Variablen ( Array[0]..... Array[31] )

richtig

>
>>int *Array[20];
> dh ein Array mit 20 zeigern auf int Variable

auch richtig

> also mit * liest man bzw zeigt man der inhalt von der zelle . oder habe
> ich die geschichte falsch verstanden?

Wenn du damit eine Beziehung zwischen deiner ersten Aussage und deiner 
zweiten herstellen willst: nein.
Das sind einfach nur 2 Arrays. In dem einen können int abgelegt werden 
und im anderen die Adressen von int-Variablen.
Aber abgesehen davon, haben die beiden nichts miteinander zu tun.


  int i;

i ist eine int Variable. D.h. in der Variablen steht direkt eine ganze 
Zahl. zb 42

   i
   +-----+
   | 42  |
   +-----+


Kommt der * dazu, dann spricht man von einer Pointervariablen.


  int j;
  int * k;

k ist so eine Pointer-Variable. Ihre Inhalt ist die Adresse im Speicher 
unter der der int zu finden ist. Das ist ein bischen so, wie das 
Funktionieren eines Stichwortverzeichnisses in einem Buch. Im 
Stichwortverzeichnis steht nicht direkt die 'Erklärung, was eine 
elektrische Spannung ist' sondern wo im Buch diese Erklärung zu finden 
ist. (Die Seitenzahl ist die 'Adresse' dieser Erklärung. Die Erklärung 
steht irgendwo im Buch und im Stichwortverzeichnis findet sich nur ihre 
Adresse)

k ist also so eine Variable. So kann die Adresse eines int speichern. j 
Ist so eine Variable, die einen int beherbergen kann (j ist eine Seite 
im Buch, k ist ein Eintrag im Stichwortverzeichnis). Daher kann k auf j 
zeigen

   j = 42;
   k = &j;

   k
   +-------+
   |  o----------------------+    j
   +-------+                 |    +------+
                             +--->|  42  |
                                  +------+


> der code ist wie hier in diesem forum gereglt als Anhang . kann jemand
> mir eklären wenn die "if"  true ist dann wird die kft PCR durchgefürt
> und den STATE auf 0x0400uL oder 0x0800uL (falls es if false ist )

Ich schau  mir das mal an und mach einen neuen Post.

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Ich schau  mir das mal an und mach einen neuen Post.

Ooops. Ich nehms zurück.
Ein DOC File mach ich grundsätzlich nicht auf.

Poste dein C-File einfach als C-File. Du brauchst es nicht in ein DOC 
verpacken und auch nicht in ein PDF sondern du hängst es einfach so an, 
wie du es hast.
Keine Arbeit für dich - keine Arbeit für uns.

von Karl H. (kbuchegg)


Lesenswert?

> was heißt den Punkt vordem PCR ?

In erster Linie bedeutet er, dass du ganz dringend ein C-Buch brauchst.

Und nein: Der 'Member of struct' Operator ist nichts exotisches. Den 
MUSS jeder C-Programmierer erkennen, wenn er ihn sieht. Das ist so, wie 
wenn du in

   int j, k, l;

   j = k + l;

fragst: Was bedeutet das +

von balou M. (fujitif)


Lesenswert?

Danke Karl Heinz Buchegger

vielen dank für deine Erklärung bezüglic array und zeiger , ich denke 
ich habe es soweit verstanden , du hast auch recht mit dem buch , bin 
gerade bei der selbst einarbeitung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.