Zeiger auf Array ein weiter schieben

Gast #5393615
Lesenswert?

Hallo zusammem,
bin in C noch nicht so fit.
Habe ein kleines Problem mit Zeigern.

Ich übergebe einen Zeiger auf ein Array dieser Funktion:
1
MasterWrite( unsigned char *msg, unsigned char msgSize)

Und zwar so:
1
U08 msg[8];
2
U08 msgSize = 8;
3
MasterWrite(msg , msgSize);

Ich will jetzt aber, dass der Zeiger nicht auf msg[0] zeigt, sondern auf 
msg[1], da in der Funktion MasterWrite erst am msg[1] angefangen werden 
soll.
Wie kann ich den Zeiger manipulieren?
Ich bekomme es einfach nicht hin. Der Compiler spuckt mir immer 
irgendwelche Fehlermeldungen aus.

Bitte haut mich nicht gleich, bin noch Anfänger.
Gast #5393645
Lesenswert?

Ich würde das schon bei der Übergabe des Zeigers einfügen:
1
MasterWrite(&msg[1], msgSize);

Je nachdem was da in der Funktion passiert, musst du dann natürlich 
aufpassen, dass du nicht über das Array hinaus läufst.
#5393670
Lesenswert?

C-Anfänger schrieb:
> Der Compiler spuckt mir immer irgendwelche Fehlermeldungen aus.

Na da wird ja auf dem Bildschirm nicht einfach im Wortlaut stehen 
"irgendwelche Fehler sind aufgetreten". Da wird schon mehr (für dich 
unverständliches Zeugs) stehen.


In solch einem Falle ist es zweckmäßig,

a) den genauen Wortlaut der Fehlermeldungen nicht geheim zu halten, 
sondern zu "veröffntlichen", so daß der geneigte Mit-Leser einen 
Kommentar dazu abgeben kann.

b) selber mal versuchen zu deuten, was die Fehlermeldung wohl aussagen 
möchte. Diese (deine) Deutungs-Annahme auch mit veröffentlichen, auf daß 
noch mehr Kommentare eintreffen.



"Aus Fehlern wird man klug" tritt dann in Folge automatisch ein
#5393671
Lesenswert?

Increment schrieb:
> C-Anfänger schrieb:
>> Oh mann, natürlich. So einfach!
>> Danke.
>
> Luther B. schrieb:
>> Du hast aber schon gesehen, dass msg als Array deklariert ist,
>> demzufolge kein lvalue ist und nicht inkrementiert werden kann?
>
> Scheint dafür aber erstaunlich gut zu funktionieren.

Weil du vermutlich was anderes compilierst, als du hier postest und 
nicht verstehst, worin der Unterschied besteht. Was macht dein Compiler 
denn hier?

1
$ cat x.c
2

3
int main()
4
{
5
  char m[8]; 
6
  m++; 
7
}
8
$ gcc x.c 
9
x.c: In function ‘main’:
10
x.c:5:3: error: lvalue required as increment operand
11
  m++; 
12
   ^

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