2017-09-25 1 views
0

J'utilise un Arduino Uno avec Arduino IDE 1.8.3. J'ai deux tableaux. Je veux écrire une fonction d'adjoint qui peut ajouter deux tableaux, et renvoyer le résultat à la fonction principale et l'imprimer.Arduino Tableau de calcul de fonction auxiliaire

Mais je veux utiliser x(sizeof(a)), mais il ne semble pas correct ...

Comment puis-je résoudre ce problème?

Ceci est mon code:

int a[]={1,2,3,4,5,6},b[]={1,1,1,1,1,1}; 
void setup() { 
    Serial.begin(9600); 
    int *p; 
    p = add(a,b); 
    for(int i=0;i<4;i++){ 
    Serial.print(*(p+i)); 
    } 
} 

void loop() { 
} 

int * add(int *a,int *b) { 
    int x = sizeof(a); 
    int y = sizeof(b); 
    static int z[4]; 
    for(int i=0;i<4;i++) { 
    z[i]=a[i]+b[i]; 
    } 
    return z; 
} 
+0

int x = taille de (a); est équivalent à int x = 6; Je pense que ça devrait être quelque chose comme int x [sizeof (a)]; –

+0

J'ai oublié de diviser par la taille d'un élément ... donc ça pourrait être quelque chose comme x [sizeof (a)/sizeof (a [0])] –

Répondre

0

int* a ne connaît pas la taille du tableau. Le plus simple est de le passer en paramètre supplémentaire. Le problème suivant est que votre résultat statique ne peut pas changer sa taille dynamiquement.

static a des problèmes supplémentaires de toute façon, en général. Renvoyer le résultat en tant que valeur de retour peut être pratique.

int* add(const int *a,const int *b, int* result, byte size) { 
    for(byte i=0; i<size; i++) { 
    result[i]=a[i]+b[i]; 
    } 
    return result; 
}