mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Info´s zu Pointern


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !!!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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'.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Beitrage !

@ Rufus
Auch schön, dass es doch immer noch Leute mit klügen Sprüchen gibt..
Naja, auch danke für deinen unpersönlichen Beitrag !!!
Gruss Stefan

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor Sattzzeichen kommen keine Leerzeichen.

Und mehrere Ausrufezeichen hintereinander ... ein sicheres Zeichen für
einen kranken Geist.

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Vor Sattzzeichen kommen keine Leerzeichen.

Das nennt sich Plenken ;)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: QuadDash (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Kranker Geist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.