Forum: Mikrocontroller und Digitale Elektronik Feldzugriff modulo


von Array (Gast)


Lesenswert?

moin,

kurze Frage:

Ist ein Feldzugriff eigentlich standardmäßig ein Modulozugriff?

Beispiel:
char Startfeld[10];
char Zielfeld [20];
char a =5;


for(j=0; j<20; j++)
{
Zielfeld = a * Startfeld[j];
}

Vorausgesetzt es stehen im Startfeld Initialwerte ungleich Null, ist im 
Zielfeld[0+j] nun der selbe Wert wie im Zielfeld[10+j] mit
j= {0,1,...,10} ???

mfg

von Array (Gast)


Lesenswert?

Die Funktion heisst natürlich richtigerweise:

for(j=0; j<20; j++)
{
Zielfeld[j] = a * Startfeld[j];
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Array schrieb:
> Ist ein Feldzugriff eigentlich standardmäßig ein Modulozugriff?

In C definitiv nicht.

Ein Zugriff über die Arraygrenzen hinaus geht ins Leere, bzw. in von 
anderen Dingen belegten Speicher.

von Georg G. (df2au)


Lesenswert?

Array schrieb:
> Zielfeld = a * Startfeld[j];

Willst du einem Array einen char-Wert zuweisen? Das geht schief. Oder 
meinst du

Zielfeld[j] = a * Startfeld[j];?

In dem Fall wäre die Antwort "nein".

von bla (Gast)


Lesenswert?

ArrayPointer[n] ist das gleiche wie

*(ArrayPointer + n * sizeof(ArrayTyp))

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

bla schrieb:
> ArrayPointer[n] ist das gleiche wie
>
> *(ArrayPointer + n * sizeof(ArrayTyp))

NEIN.

ArrayPointer[n] ist das gleiche wie

*(ArrayPointer + n);

von bla (Gast)


Lesenswert?

Klar. Da war ich voreilig.

von Reinhard Kern (Gast)


Lesenswert?

Array schrieb:
> Ist ein Feldzugriff eigentlich standardmäßig ein Modulozugriff?

Schon Generationen von Hackern leben wesentlich davon, dass das nicht 
der Fall ist. Zumindest im Adressraum des Prozesses kann man so im 
Prinzip JEDE Adresse erreichen. Das sind die berühmten Buffer Overflow 
Exploits.

Es liegt also am Programmierer, so einen Zugriff zu verhindern.

Gruss Reinhard

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.