2016-03-24 5 views
-2

In meiner Anwendung (mit c) Ich brauche einig Integer-Parameter von einem Byte-Puffer mit folgenden Syntax zu lesen:Pufferzeiger als Argument in c-Funktion

param1 = (uInt16)(buffer[1]<<8) + buffer[0]); 
param2 = (uInt16)(buffer[3]<<8) + buffer[2]); 

Ich mag eine Funktion schreiben Integer zu erhalten aus dem Puffer ohne Indizes oder feste Zahl und nannte es mehrmals ... wie folgt aus:

param1 = getWord(buffer); //The buffer now points to first integer 
param2 = getWord(buffer); //now the buffer points to second integer 

In diesem Fall muss ich den Puffer als Referenz zu übergeben und sicher muss ich den Pufferzeiger innerhalb der erhöhen Funktion. Kann mir jemand helfen, diese Funktion zu schreiben? Wahrscheinlich muß ich den Array-Zeiger als Parameter zu übergeben, aber ich weiß nicht, wie zu tun, dass

+1

Zeigen Sie Ihre Bemühungen und wir werden Ihnen bei Problemen helfen. Dies ist kein Code für Ihren Service. – LPs

+1

Ich stimme für das Schließen dieser Frage als Off-Topic ab, da SO kein Kodierungsdienst ist. – LPs

+1

Sie könnten es mit einer 'static'-Variable tun, aber ich empfehle, einen Offset- oder Indexparameter' uint16_t getWord (uint8_t * buffer, uint32_t offset) hinzuzufügen; ' – Rocki

Antwort

1
unsigned int getWord(*buffer) 
{ 
    unsigned int a; 
    a=((buffer[1]<<8)|buffer[0]); 
    return a; 
} 

, während die Verwendung bitweise Operatoren wie ‚&‘ arbeitet, ‚|‘ nicht arithmetische Operatoren wie '+'

Hoffen Sie die Idee

+0

kann ich nicht verwenden, weil der Zeiger auf Puffer ist jedes Mal gleich ... Wenn ich diese Funktion mehr Zeit aufrufen, lese ich den gleichen Wert und nicht die nächste ganze Zahl von der Puffer. Ich muss den Pufferzeiger innerhalb ändern ... – Lorenzo

+0

es ist eine Funktion, Sie können es wie unsigned int a nennen; unsigned char array [] = "Hallo"; a = getWord (Array); – Mukesh

+0

der Wert von Array kann geändert werden und die Funktion kann wieder aufgerufen werden – Mukesh