Salut ,J'ai un petit problème avec cette structure:
Code :
avec int *data;
double value;
Code:
1
2 data=&example[0][0].value; XSynth_top_Write_example_0_value_Words(&synth_linear,0, data, 2048) ;
Version imprimable
Salut ,J'ai un petit problème avec cette structure:
Code :
avec int *data;
double value;
Code:
1
2 data=&example[0][0].value; XSynth_top_Write_example_0_value_Words(&synth_linear,0, data, 2048) ;
Salut,
Tu essayes litérallement de faire pointer un int sur un double. :calim2:
Est bien entendu totalement faux.Code:
1
2 double v; int* d = &v;
Comment t'es-tu retrouvé dans cet état ?
D'où sors-tu cette syntaxe et assignation ?
Quel est le but de ce truc ?
et le l' exemple est :Code:
1
2
3 typedef struct feature { int id; double value;
je veux faire un pointeur sur id et sa marche correctement puis je suis entrain de faire un pointeur sur "la value"Code:Feature example[NUM_EXAMPLES][MAX_NUM_OF_FEATURES_PER_EXAMPLE];
comme ça :
Code:
1
2
3
4
5 data=&example[0][0].id; XSynth_top_Write_example_0_id_Words(&synth_linear, 0, data, 1024) ; // data=&example[0][0].value; XSynth_top_Write_example_0_value_Words(&synth_linear,0, data, 2048) ;
Si tu veux pointer sur un double, il te faut un pointeur sur un.. double. double* :weird:
c-à-d c'est impossible comme ça et comment je peux corriger?
Bonjour
Tu as deux adresses sur deux types différents, il te faut deux pointeurs
Code:
1
2
3
4
5
6
7 int *data_int; double *data_dbl; data_int=&example[0][0].id; XSynth_top_Write_example_0_id_Words(&synth_linear, 0, data_int, 1024) ; // data_dbl=&example[0][0].value; XSynth_top_Write_example_0_value_Words(&synth_linear,0, data_dbl, 2048) ;
Ou alors tu utilises un pointeur mais universel et ensuite tu précises son type d'utilisation au moment où tu t'en sers.
Code:
1
2
3
4
5
6 void *data; data=&example[0][0].id; XSynth_top_Write_example_0_id_Words(&synth_linear, 0, (int*)data /* A ce moment il contient l'adresse d'un entier */, 1024) ; // data=&example[0][0].value; XSynth_top_Write_example_0_value_Words(&synth_linear,0, (double*)data /* A ce moment il contient l'adresse d'un double */, 2048) ;
Quoique, à la réflexion, je ne suis même pas certain que le cast soit obligatoire. Si la fonction XSynth_top_Write_example_0_id_Words attend un pointeur sur int en 3° paramètre, alors lui passer "data" tel quel fonctionnera grace au cast implicite. Et même remarque concernant XSynth_top_Write_example_0_value_Words. Mais bon, c'est plus parlant si tu le laisses...