Gast
#2389912
Wie kommt es zu dieser Warnung? warning: passing argument 2 of 'rtcc_to_ascii' from incompatible pointer type
1 | |
2 | |
3 | |
4 | |
5 | |
1 | |
2 | |
3 | |
4 | |
|
Anzeige
|
Warnung "incompatible pointer type"
Gast
#2389912
Wie kommt es zu dieser Warnung? warning: passing argument 2 of 'rtcc_to_ascii' from incompatible pointer type
Gast
#2389918
weil &Buffer falsch ist, entweder &Buffer[0] oder Buffer.
Gast
#2389919
Michi schrieb: > rtcc_to_ascii(tmp,&Buffer,ADDR_HOUR); Bei einem Array ist der Name bereits eine Adresse, also gits zwei Möglichkeiten: direkt: rtcc_to_ascii(tmp, Buffer ,ADDR_HOUR); und Adresse des ersten Feldes: rtcc_to_ascii(tmp, &Buffer[0] ,ADDR_HOUR); :-)
Gast
#2389924
Wobei ich lieber statt "rtcc_to_ascii(tmp, &Buffer[0] ,ADDR_HOUR);" die Variante "rtcc_to_ascii(tmp, &(Buffer[0]) ,ADDR_HOUR);" bevorzugen würde ;-)
Gast
#2389931
aaah Danke! was veraendert die () um &(Buffer[0]) ?
Gast
#2389935
Matthias schrieb: > Wobei ich lieber statt > die Variante > bevorzugen würde ;-) warum - schreibst du gerne Klammern?
Gast
#2389936
Michi schrieb: > was veraendert die () um &(Buffer[0]) ? nichts. Aus dem Grund stand sie auch nicht da. Jeder C-Programmierer, der das Zeigerkonzept erstmal verstanden hat, wird aber einfach nur "Buffer" schreiben statt dieser unsäglichen Verrenkungen. ;-) Es dauert auch nicht lange, da kann man diese Schreibweise dann deutlich besser lesen. Da schreibt man dann auch "Buffer + 2", wenn man einen Zeiger auf das zweite Element von Buffer weitergeben will, statt irgendwelcher krückiger "&Buffer[2]". :) Das Kapitel "Pointer and Arrays" hat eine relativ zentrale Bedeutung im Verständnis und der Beherrschung der Sprache C. Es sei jedem angeraten, die Details verstanden zu haben, statt das jedesmal per trial&error zu implementieren.
Gast
#2389976
> Das Kapitel "Pointer and Arrays" hat eine relativ zentrale Bedeutung
Deshalb C Buch besorgt :-)
Buffer+1 wäre meine nächste Frage gewesen.
Ist das erlaubt wenn man das erste Zeichen wegschneiden möchte? Vielen Dank
Gast
#2389978
Michi schrieb: > Ist das erlaubt wenn man das erste Zeichen wegschneiden möchte? ja warum auch nicht? Michi schrieb: > Ist das erlaubt wenn man das erste Zeichen wegschneiden möchte? Genauer: das erste Element des Arrays. Das ist nicht zwingend nur ein Byte, wenn die Elemente größer sind, werden Zeigeradditionen in der Größe der Elemente vorgenommen.
Gast
#2390330
Also meiner Meinung nach, lässt sich die "Verrenkung" besser lesen.
Aber das dürfte von den Gewohnheiten des jeweiligen Programmierers
abhängen.
Wenn "&(Buffer[2])" da steht, dann lese ich das als "Adresse des
Elements mit Index 2" von dem Array.
Der Compiler mach natürlich intern auch nur ein "Buffer+2" und
Buffer ist ja auch "nur" ein Zeiger auf das erste Element des
Arrays.
Aber wie schon gesagt, das ist Geschmackssache...
@Jörg
>>dann auch "Buffer + 2", wenn man einen Zeiger auf das zweite
Ist das nicht das 3. Element?
(Index[0] = 1. Element, Index[1] = 2. Element und Index[2] = 3. Element)
Genau deswegen schreibe ich das als Index. (auch wenn es eine Verrenkung
ist)
Matthias schrieb: >>>dann auch "Buffer + 2", wenn man einen Zeiger auf das zweite > Ist das nicht das 3. Element? Ja, latürnich. Zu schnell hingeschrieben. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|