Ce n'est pas tant une question de gout que de ce que tu as besoin de faire.Envoyé par stephl
Ce n'est pas tant une question de gout que de ce que tu as besoin de faire.Envoyé par stephl
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Je ne vois pas de cas où je serais obligé d'obtenir l'adresse d'un tableau.Envoyé par Jean-Marc.Bourguet
Quand on parle de conversion (ici, implicite double -> int), c'est la valeur servant à initialiser le paramètre qui est convertie, pas la valeur de la variable originale...Envoyé par stephl
Pas de Wi-Fi à la maison : CPL
J'ai donne un exemple plus haut dans cette discussion:Envoyé par stephl
http://www.developpez.net/forums/sho...0&postcount=57
Naturellement, on peut aussi dupliquer le code.
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Si tu veux, mais le warning est suffisant pour m'alerter d'un problème. Ici, c'est clairement une incompatibilité de type.Envoyé par Jean-Marc.Bourguet
Pas de Wi-Fi à la maison : CPL
On peut, mais ça a une autre signification. Ca sert notamment à initialiser un pointeur sur tableau.Envoyé par stephl
Pas de Wi-Fi à la maison : CPL
Si tu dois manipuler des tableaux taille fixe, ça évite un paramètre. Type tableau recommandé (j'ai montré un exemple).Envoyé par stephl
Pas de Wi-Fi à la maison : CPL
J'avais bien vu votre exemple (fort intéressant), cependant, c'est un exemple d'utilisation. Rien ne m'oblige à utiliser f(), et personnellement, je n'aurais pas coder de cette manière. Ce que je veux dire, c'est que je ne vois pas de situation où utiliser & devant un tableau s'impose.Envoyé par Jean-Marc.Bourguet
Si on connaît la taille des tableaux à l'avance et que la fonction de traitement est spécifique, je préfère considérer que la fonction a obtenu un pointeur et intégrer la taille du tableau dans la boucle.Envoyé par Emmanuel Delahaye
Peux-tu expliciter ?? je ne suis pas là...Envoyé par Jean-Marc.Bourguet
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Je viens de tester avec Visual pour const, et j'ai ces deux prototypes qui compilent :Envoyé par Emdel
Edit: Et seul le second accepte un tableau const.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void AfficherTableau(int (* const pcTab)[10]); void AfficherTableau(int const (* const pcTab)[10]);
Ce doit être le même problème que pour les const char * const *
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Et si tu décides de changer la taille de ton taibleau, et que plusieurs fonctions reçoivent un tel tableau en paramètre? Il y a un enjeu de maintenance évident là-derrière. Tu peux, comme l'a montré Emmanuel, utiliser un type tableauEnvoyé par stephl
et centraliser ainsi la définition de la taille de ton tableau. Un codage en dur rendrait la maintenance très fastidieuse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef int int_a [10];
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Pas si on utilise un #define pour la taille du tableau.Envoyé par mujigka
Tu as raison!Envoyé par stephl
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Après, je pense que c'est à chacun de voir ce qu'il préfère.Envoyé par mujigka
En fait, ça permet de s'assurer statiquement qu'on passe bien un tableau de la bonne taille et non un pointeur avec la taille pas loin.
Mais ça montre sa vraie puissance avec le C++ (même si là, on passe plus souvent une référence qu'un tableau).
Attention, c'est du gros C++ qui tâche, alors âmes sensibles s'abstenir:
Et pour information, la version C++ de la macro ARRAYSIZE() de Microsoft repose sur ce principe (templates etc.) pour ne marcher que sur les tableaux (erreur de compilation si on lui passe un pointeur).
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 //La fonction normale, comme on l'emploie en C : void EcrireDansTableau(int *tab, size_t n); //Ici, un template qui détermine statiquement la taille. //N est considéré comme une constante connue à la compilation. //La fonction appelle son amie en lui passant la taille. //Et comme elle sera sans doute inlinée par le compilo, aucun cout en performance. template< size_t N > void EcrireDansTableauPtr(int (*pTab)[N]) { EcrireDansTableau(*pTab, N); } //Et ici, une fonction équivalente avec le tableau passé par référence //(plutôt qu'un pointeur) et le même nom. //Cela évite d'avoir à employer une syntaxe différente. //Voir à ce sujet la fonction Microsoft strcat_s(). template< size_t N > void EcrireDansTableau(int (&tab)[N]) { EcrireDansTableau(tab, N); }
PS1 : Voici l'adresse de la doc de strcat_s() :
http://msdn2.microsoft.com/en-us/lib...x4(VS.80).aspx
PS2 : Ici, je ne me suis pas amusé avec les const, une chose compliquée à la fois s'il vous plait!
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Merci Médinoc pour cet exemple d'application intéressant!Envoyé par Médinoc
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Oui, c'est ce que j'ai mis, mais je passe l'adresse d'un tableau non const et gcc rale. Pour moi, c'est pas logique et je soupçonne un bug de gcc (ce cas étant quand même hyper rare, je ne serais pas étonné).Envoyé par Médinoc
Pas de Wi-Fi à la maison : CPL
Il faut donc un paramètre supplémentaire (ou une sentinelle)...Envoyé par stephl
Pas de Wi-Fi à la maison : CPL
BofEnvoyé par stephl
Il y a des utilisateurs vicieux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #undef N #define N 100
Pas de Wi-Fi à la maison : CPL
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager