Un ptit coup de main sur pointeurs et fonction svp [C] - C++ - Programmation
Marsh Posté le 10-01-2003 à 03:23:35
[IQS]Krusty a écrit : Voila j'ai eu une interro et y a deux fonctions j'ai pas compris.. Vu que je vais bientot avoir examen il serait temps de capter |
la première est une fonction nommée fn3 qui renvoie un char : char fn3 (des conneries)
l'espace après fn3 est là pour tefaire chier.
l'argument est de type double(*p)(double a[])
donc un pointeur sur fonction qui renvoie un double (nommé p ici) : double(*p)(des conneries)
la foncction en question prend comme argument un tableau de doubles : double a[]
le 'a' est là pour te faire chier, car on peut (ou pas) donner des noms dans les signatures de fonctions :
int f(int a);
ou
int f(int);
la seconde est une fonction qui renvoie un pointeur sur une structure liste : struct liste *fn4(des conneries);
et qui prend en paramètre un tablea de pointeurs sur des doubles : double * t[]
J'espère ne pas m'être planté car c'est hyper chiant à lire ton truc.
Marsh Posté le 10-01-2003 à 07:43:04
[IQS]Krusty a écrit : Merci bcp malgré l'heure |
De rien, j'ai eu le temps de finir de rajouter le support des exception à pocketsmalltalk dans la nuit, en même temps que je glandais sur le net.
Marsh Posté le 11-01-2003 à 04:43:45
Bravo nraynaud, tu as réussi son exercice .
Une petite précision:
'double a[]' en argument se lit tableau mais est en réalité un pointeur: 'double* a'.
'double * t[]' est en réalité un 'double**t'.
Marsh Posté le 11-01-2003 à 05:28:19
Musaran a écrit : Bravo nraynaud, tu as réussi son exercice . |
ha bon ??? pourtant mon copilo ne veut pas de :
int i = 10
int a[10] = &i;
ni de :
double *fv;
double *fa[10] = &fv;
conclusion : c'est pas pareil, par contre,
un type tableau est compatible avec un type pointeur (et non l'inverse).
Quand le besoin se fait sentir, le compilo converti un tableau en pointeur.
Si tu commences à dire n'importe quoi sur la compatibilité des types dès le C (où ils ne servent, rappelons-le non pas à la qualité mais à l'allocation de mémoire) qu'est-ce que ça va être au moment de passer à Eiffel !
Marsh Posté le 12-01-2003 à 04:47:57
nraynaud a écrit a écrit : Quand le besoin se fait sentir, le compilo converti un tableau en pointeur. |
Et une fonction C/C++ ne peut prendre de tableau en argument formel.
Pour ces deux raisons, les crochets vides sont ramenés à un pointeur dans le type d'un argument, et uniquement dans ce cas.
Code :
|
Par contre cela ne vaut que pour la première 'dimension'. Les suivantes font partie intégrante du type, et doivent être spécifiées:
Code :
|
Ça fait partie des incohérences historiques du C, répercutées en C++ au nom de la sacro-sainte compatibilité.
Le C++ a des zones sombres, ouais, bien moisies même...
Marsh Posté le 13-01-2003 à 19:42:39
Bon est ce qu'on peut resumer et me dire si c'est bon (parce que la ca devient la prise de tête avec les copains)
Code :
|
merciii
Marsh Posté le 14-01-2003 à 01:53:02
Le premier est un pointeur de tableau (simple dimension) de MAX entiers.
Il peut s'utiliser...
Code :
|
Marsh Posté le 10-01-2003 à 01:31:31
Voila j'ai eu une interro et y a deux fonctions j'ai pas compris.. Vu que je vais bientot avoir examen il serait temps de capter
char fn3 (double(*p)(double a[]));
C'est quoi l'argument qu'on passe la dedans ???
struct liste *fn4(double * t[]);
c'est quoi l'argument et le return ??
Merci bcp