Hi! Bin Anfänger in C und habe bis jetzt noch nicht verstanden, wie ich Pointer benutze. Ich will eine art dyn. Array zum Speichern von Messwerten im SRAM anlegen. Kann mir jemand erklären wie man Pointer benutzt oder ein Link zu einem guten C-HOWTO posten??? Danke!
Hallo Fabian Bin auch Anfänger in C und habe das so verstanden. Pointer sind Zeiger auf Speicherstellen. Jede Variable belegt ja irgendwo Speicherplatz, der auch entsprechende Adressen hat. Der Pointer weiß halt nun, wo die Variable im Speicher liegt und kennt die Adresse dieser. Großer Vorteil der Pointer ist halt nun, das man mit diesen rechen kann. Kleines Beispiel: unsigned char daten[20] ="Hallo Welt"; //Array anlegen unsigned char *zeiger = &daten[0]; //zeiger auf erste Stelle des Arrays einstellen *zeiger zeigt jetzt auf die erste Adresse im Speicher der Variable daten temp = *zeiger; //einstellen auf erste Stelle = H temp = *++zeiger; //einstellen auf zweite Stelle = a temp = *--zeiger; //einstellen auf erste Stelle = H Hoffe habe das so eingermaßen verstanden und rübergebracht. Bin für jede weitere Erklärung Dankbar. MFG Dieter
unsigned char *zeiger = &daten[0]; läßt sich übrigens einfacher schreiben als: unsigned char *zeiger = daten; Wenn man ein Array ,,im Ganzen'' irgendwo benutzt (Zuweisung, Übergabe an eine Funktion), dann wird von diesem stets nur ein entsprechender Zeiger weitergegeben. Die Zeigerarithmetik funktioniert damit dann genauso: unsigned char *zeiger = daten + 1; wäre identisch zu unsigned char *zeiger = &daten[1]; Übrigens ist "char" ein schlechtes Beispiel für einen Datentyp für Zeigerarithmetik, da die Größe eines "char" ohnehin ein Byte ist. Interessanter ist schon: int daten[] = { 3, 4, 1, 22785; }; int *zeiger; zeiger = daten + 3; In diesem Falle zeigt "zeiger" nicht etwa auf 3 Bytes nach dem Anfang von "daten", sondern auf wieviel Speicherplatz auch immer 3 Elemente vom Typ "int" belegen, d. h. es wird damit genauso wieder ein Zeiger auf eine Speicherstelle dargestellt, die 22785 enthält. Ist also ebenfalls identisch zu zeiger = &daten[3]; Ansonsten wollte Fabian sicher wissen, wie man malloc() benutzt, aber das sollte man wirklich in einem guten Buch nachlesen. Es ist zu viel, als daß ich darüber noch dazu in einem häßlich zu bedienenden Web-Forum (*) eine Abhandlung schreiben würde. (*) Das bezieht sich nicht etwa nur auf dieses Forum hier, sondern allgemein auf Web-Foren. Das bißchen Form-Editor in einem Web-Browser ist einfach gruselig, wenn man ansonsten einen ordentlichen Editor gewohnt ist. Für Mailinglisten oder Newsgruppen kann ich meinen Standardeditor benutzen, da bin ich noch eher geneigt, ein paar Sätze mehr zu schreiben.
Jörg, probier's doch mal mit Emacs-w3m auf http://www.mikrocontroller.net/forum-extern/. Oder bist du einer von der vi-Fraktion? ;-) Andreas
Ich bezweifle, dass mein alter Emacs schon ein brauchbares w3m hat. :) Aber Du hast Recht, vielleicht sollte man sich fuer solche Foren dann eher den w3m antun als einen ,,normalen'' Browser... Nein, vi benutze ich nur ,,fuers Editieren zwischendurch'', fuer die normale Arbeit laeuft bei mir auch ein Emacs.
Ich meine nicht den internen Emacs-Browser w3 (ohne m), der ist IHMO eine ziemliche Gurke, sondern emacs-w3m, ein "Plugin" das den Textbrowser w3m in den (X)Emacs einbindet. Funktioniert prima, aber leider kann meine Version im Moment noch nicht so richtig mit Cookies umgehen, so dass man Name und Email immer neu eingeben muss. Trotzdem ist das besser als Mozilla & Co.
Ja, wollte nur mal schreiben, daß ich mir das nun endlich mal angetan habe. Ja, das ist in der Tat für derartige Foren deutlich praktischer als ein Galeon. Danke nochmal für den Tip!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.