Parcourir ce sujet :
1 Utilisateur(s) anonymes
Les pointeurs, même plus peur ... ou presque !! |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Bon maintenant s'en est de trop.
Voici une fonction issue de MAXIM qui ne fonctionne pas dans mon programme :
//---------------------------------------------------------------------------
Que j'ai transformé comme ceci :
void OWBlock(u8 *pu8data, U8 u8data_len)
Bon déjà ce code marche pas chez moi. Ensuiste, comment ce sert-on de ces arguments ? Enfin je veux dire, le pointeur *pu8data ? C'est marrant parce que, ici, on déclare un pointer, pour une taille à définir, et ça se transforme en tableau dans la fonction avec data[u8loop] = OWTouchByte(data[u8loop]); J'imagine qu'un pointeur pour 8 valeurs, est équivalent à un tableau déclaré de 8 valeurs ... Là , je nage ...
Posté le : 15/03/2016 16:46
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Les pointeurs, même plus peur ... ou presque !! |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
27/09/2005 18:07 De Metz
Messages:
1354
![]() |
Citation :
C'est marrant parce que, ici, on déclare un pointer, pour une taille à définir, et ça se transforme en tableau dans la fonction Je vais essayer de faire simple: C ne sait passer des paramètres que par VALEUR, c'est à dire en effectuant une copie de la valeur des paramètres appelants et utiliser cette copie dans la fonction. Lorsqu'on veut passer un tableau en paramètre, on ne copie pas toutes les données du tableau mais seulement l'adresse de début du tableau, d'où la notion de pointeur puisqu'un pointeur correspond normalement à une adresse. Pour en revenir à ton exemple, dans void OWBlock(u8 *pu8data, U8 u8data_len), pu8data est égale à l'adresse de ton tableau. A une subtilité près, void OWBlock(u8 pu8data[], U8 u8data_len) aurait pu être également utilisé avec un comportement identique. Ton code ne peut pas compiler car ton tableau s'appelle pu8data dans la liste de paramètres et data dans le corps de ta fonction, qu'il faudrait donc réécrire ainsi:
void OWBlock(u8 *pu8data, U8 u8data_len)
Posté le : 15/03/2016 18:01
|
|
![]() |
Re: Les pointeurs, même plus peur ... ou presque !! |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Merci Jacques, je comprend mieux.
Mais du coup, en argument lors de l'appel de cette fonction, quel type de variable je lui passe à *pu8data ? Actuellement, j'ai une variable tableau du type U8 maVariable[8], il faut bien que je déclare quelque part que j'ai besoin d'allouer 8 octets ?
Posté le : 15/03/2016 20:41
Edité par dinastar sur 15/03/2016 23:09:44
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Les pointeurs, même plus peur ... ou presque !! |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
27/09/2005 18:07 De Metz
Messages:
1354
![]() |
Comme ceci par exemple:
int main()
Posté le : 15/03/2016 23:12
|
|
![]() |
Re: Les pointeurs, même plus peur ... ou presque !! |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Ok c'est pigé ! Je vais voir et réécrire mes fonctions.
Merci encore !
Posté le : 16/03/2016 00:30
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.