Info´s zu Pointern

Gast #359585
Lesenswert?

Hallo! Ich beschäftige mich längere Zeit mit der C-Programmierung für
Mikrocontroller. Vorher habe ich ausschließlich in Assembler
programmiert. Nun, ständig laufen mir die Pointer über den Weg.
Allerdings, so richtig verstehe ich den Umgang mit dieser Funktion
nicht. Gibt es  irgendwo einen gute Literatur, wo man sich Information
besorgen kann ? Kann auch ein pdf oder ein Link sein!
Danke vorab für Eure Beiträge !!!!
#359586
Lesenswert?

Das sind keine Funktionen.
Der Ausdruck 'Pointer' wird in 2 Zusammenhängen benutzt_
* als Synonym für 'Adresse von'
* als Variable in der eine Speicheradresse gespeichert wird.

Wenn du Assembler programmiert hast, dann kennst du wahrscheinlich
Pointer bereits:
Stell dir vor, du hast ein Register (Registerpärchen) indem
du die Speicheradresse speicherst, von der du tatsächlich
lesen möchtest. Um tatsächlich zu lesen, programmierst du
dass der Zugriff indirekt über dieses Register oder
Registerpärchen geführt werden soll.
Genau das ist in C-Terminologie ein 'Pointer'.
Gast #359587
Lesenswert?

Wenn Du Dich ohne Vorkenntnisse mit C beschäftigen willst, solltest Du
Dir sowieso ein entsprechendes Buch zulegen (leihen oder kaufen). Imho
ist das Buch von den C-Erfindern Kernighan und Ritchie ein ziemlich
gutes Werk. Da ist auch die Sache mit den Pointern recht gut erklärt.

Ansonsten hat Karl Heinz ja schon eine Erklärung geliefert. Ein Zugriff
mit einem Pointer (auf deutsch Zeiger) ist ein indirekter Zugriff, bei
dem die betreffende Variable nicht direkt, sondern über ihre Adresse
angesprochen wird, so wie es in AVR-Assembler z.B. mit ld(d) oder lpm
gemacht wird. Der Zeiger zeigt nur auf die Variable...
Gast #359589
Lesenswert?

Hallo Stefan! Mit Pointern ist's ähnlich wie mit dem Deppenapostroph
(s. "Info's zu Pointern". Statt überall sinnlos Apostrophe zu
setzen, schreibst du vor jeden Variablennamen ein "*" und schon
klappt's mit den Pointern.

Beispiel: Statt
int info;
info=42;
schreibst du
int *info;
*info=42;

Es kann noch Unannehmlichkeiten entsprechend nervigen Antworten auf
Deppenapostrophe geben, die dann in Form von Segmentation faults
auftreten. Um das zu verhindern müsstest du deutsch bzw. C schreiben
lernen.
Persönliche Seite #359590
Lesenswert?

@Unbekannter:
Das ist sogar noch schlimmer, das ist kein Deppenapostroph, sondern ein
Deppenakzent:

  Info´s

und nicht

  Info's

In keiner westeuropäischen Sprache wird der Plural durch Anhängen eines
Apostroph-s gebildet, noch weniger durch Anhängen eines Akzent-s. Es
gibt zwar Vermutungen, daß das bei einigen FNBL-Dialekten  doch der
Fall wäre, aber das will & mag ich nicht glauben. So schlecht kann doch
die Bildung auch dort nicht gewesen sein.

Zurück zum Thema:

  Beispiel: Statt

  int info;
  info=42;

  schreibst du

  int *info;
  *info=42;


Dieses gutgemeinte Beispiel geht in die Hose, weil der Pointer, der
hier verwendet wird, irgendwohin zeigt. Den Zahlenwert aber
"irgendwohin" zu schreiben ist selten sinnvoll und wird auch nur
selten den erwünschten Effekt haben.

Damit man einen Pointer so verwenden kann, muss er initialisiert
werden, d.h. auf eine sinnvolle Adresse zeigen:

  int info;
  int *pointer;

  pointer = &info;
  *pointer = 42;


Inhaltlich hat Karl Heinz alles wesentliche gesagt; ich frage mich ein
bisschen, wie man Assembler programmieren können will, wenn dieses
Konzept unverständlich ist ... aber jeder hat seine persönliche
Herangehensweise an ein Problem und vielleicht hat es bei Stefan jetzt
auch schon längst sehr laut "Aha!" gemacht und eine leichte
Schamesröte sein Gesicht erobert ...
Gast #359594
Lesenswert?

Ärgerlich finde ich, daß selbst, wenn man es mögichst diplomatisch
formuliert, die Leute immer gleich verärgert sind, wenn man sie auf
ihre Rechtschreib-, Zeichensetzungs- oder ähnliche Fehler aufmerksam
macht. Die meisten wissen sonst nicht, daß es falsch ist und machen es
immer wieder falsch. Die Antwort auf diese Hilfe liegt fast immer je
nach Laune zwischen einfachem Ignorieren und wüsten Beschimpfungen,
weshalb ich mich meist lieber zurückhalte. Schade eigentlich, daß
niemand mehr überhaupt wissen will, was er falsch macht.
Gast #359595
Lesenswert?

> Schade eigentlich, daß niemand mehr überhaupt wissen will, was er
> falsch macht.
Leider. Aber ich persönlich sehe Korrekturen meiner Fehler immer gerne
- nur so lernt man dazu!

----, (QuadDash).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren