mikrocontroller.net

Forum: PC-Programmierung pointer auf Adresse


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mahlzeit,
ich möchte mir werte von einem Adressbereich holen. Dazu habe ich eine 
Funktion, die die Adresse als Pointer haben möchte.
Für eine einzelne Adresse funktioniert das auch ganz gut.
for(counter=0; counter<length; counter++)
{
  memory_get_data(&buffer, &startAddress);
}

hier wird mir der wert, welcher in startAddress steht in buffer 
geschrieben.

for(counter=0; counter<length; counter++)
{
  memory_get_data(&buffer, &(startAddress+counter));
}
Das funktioniert aber nicht, da (startAddress+counter) ein ergebnis ist 
und keine Adresse mehr.

Wie kann man es am besten machen?

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(&startAddress) + counter ?

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
Ist aber Dreck, da es abhängig davon ist wie breit dein Datum ist.
Müsstes also n*counter machen.

oder gleich richtig:

<datentyp> * ptr = &startAddress;

ptr + counter

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Felix schrieb:
> for(counter=0; counter<length; counter++)
> {
>   memory_get_data(&buffer, &startAddress);
> }

Sind da nicht ein paar &-Zeichen zuviel?

Welchen Datentyp haben buffer und startAddress?

Und wie sieht die Funktion memory_get_data aus?

Davon hängt es ab, wie der Aufruf von memory_get_data tatsächlich
aussehen muss. Evtl. ist auch einfach
  memory_get_data(buffer, startAddress);
  memory_get_data(buffer, startAddress+counter);

der richtige Weg.

Autor: GEKU (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Felix schrieb:
> memory_get_data(&buffer, &startAddress);

wie wäre es mit einem dritten Parameter :

          memory_get_data(&buffer, &startAddress, block_size);

Autor: GEKU (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GEKU schrieb:
> memory_get_data(&buffer, &startAddress, block_size);

Sorry ich habe übersehen, das die Funktion memor_get_data vorgegeben 
ist.

Interessant wäre der Prototyp der Funktion.

Z. B.   void memory_get_data(char *pBuffer, int startAddress);

dann wäre Startaddress kein Zeiger, sondern ein Adresswert,  der kein & 
benötigt. Man könnte man counter ohne weiters dazuzählen, da counter 
ebenfalls vom Typ int ist.

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.

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