Voglio passare un puntatore a una funzione. Voglio che questo puntatore indichi un punto nel mezzo di un array. Supponiamo che io abbia un array come tale unsigned char BufferData[5000];
, la seguente frase dovrebbe essere sintatticamente corretta?Qual è il modo corretto di sfalsare un puntatore?
writeSECTOR(destAddress, (char *)(BufferData + (int)(i * 512)));
// destAddress is of type unsigned long
// writeSECTOR prototype: int writeSECTOR (unsigned long a, char * p);
// i is an int
Sì. Il cast di 'int' non è necessario, ma in caso contrario la tua affermazione è valida. –
In effetti, direi che la tua soluzione è migliore di molte delle risposte proposte qui sotto! –
Preferisco l'approccio & array [i] in quanto è più ovvio che stai sfalsando un puntatore in un array, cioè BufferData + (i * 512) è meno leggibile rispetto alle sue intenzioni rispetto a BufferData [i * 512]. – Cthutu