Const dans les fonction
Résolu/Fermé
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
-
27 juil. 2014 à 17:18
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - 28 juil. 2014 à 16:33
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - 28 juil. 2014 à 16:33
A voir également:
- Const dans les fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer dans word - Guide
- Fonction somme excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
Modifié par fiddy le 27/07/2014 à 22:50
Modifié par fiddy le 27/07/2014 à 22:50
Bonjour,
Ca n'existe pas en C...
Plutôt
J'ai retiré le second const.
Il s'agit d'une indication aux compilateurs que la valeur retournée ne sera pas modifiée. Cela lui permet dans certains cas d'améliorer l'optimisation du code lors de la compilation.
Cdlt,
Google is your friend
Ca n'existe pas en C...
Plutôt
const bool maFonction( param ) {.....; return true;}
J'ai retiré le second const.
Il s'agit d'une indication aux compilateurs que la valeur retournée ne sera pas modifiée. Cela lui permet dans certains cas d'améliorer l'optimisation du code lors de la compilation.
Cdlt,
Google is your friend
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
27 juil. 2014 à 22:53
27 juil. 2014 à 22:53
'lut,
Mis devant le type de retour de la fonction, il s'applique au type. Ici un
A partir d'ici je généralise: ça vaut donc pour les types de retour, d'argument et de variables.
Quant au
constveut juste dire "constant", qu'on ne pourra pas modifier.
Mis devant le type de retour de la fonction, il s'applique au type. Ici un
const bool, dans la pratique, ne diffère pas d'un
booltout court car sa valeur est copiée, et ce n'est pas un pointeur. En effet le programme suivant ne génèrera aucune erreur (avec
gcc -std=c99 -Wall -o test test.c):
#include <stdbool.h> const bool test() { return true; } int main() { bool z = test(); (void) z; // Pour pas que le compilo //se plaigne d'une variable pas utilisée return 0; }
A partir d'ici je généralise: ça vaut donc pour les types de retour, d'argument et de variables.
bool * b;est un pointeur vers un booléen.
const bool * b;est un pointeur vers un booléen dont on ne peut pas changer la valeur (donc impossible de faire
*a = false)
bool *const b;est un pointeur de bool dont on ne peut pas changer où il pointe, mais changer le contenu pointé; on peut faire
*a = falsemais pas
bool a = false; b = &a;)
const bool *const b;est un pointeur inchangeable vers un bool inchangeable. Une pseudo-constante quoi.
Quant au
constaprès le nom de la fonction, c'est du C++ et non du C. C'est pour indiquer qu'on ne peut pas modifier l'objet
thisou ses membres dans la fonction.
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
19
28 juil. 2014 à 16:33
28 juil. 2014 à 16:33
Bonjour,
Oui voila, c'était ce que je cherchais, j'ai du confondre C et C++ pour le const après le nom de la fonction.
merci à vous tous pour vos réponse.
Cordialement.
Oui voila, c'était ce que je cherchais, j'ai du confondre C et C++ pour le const après le nom de la fonction.
merci à vous tous pour vos réponse.
Cordialement.
28 juil. 2014 à 11:17
Effectivement sous la première forme elles n'existe pas, mais également sous la re-première forme elles existe à condition qu'il complète sa définition de variable comme ceci
exemple:
Deuxième point le devant le type de la fonction ne sert pas à grandes choses tout simplement parce que les valeurs qu'elle renvoie ne peuvent être que soit faux où vrais, donc, logiquement on comprend que c'est une valeur constante absolus et il ce peut que sur certain compilateur qu'on obtienne des warning de ce genre
La définition où les jeux de définition dans l'exemple de @gravgun , est à faire dans une fonction ou à la limite sur les paramètres de la fonction mais pas sur le type de la fonction.
Je comprendrais pour d'autre raison ou cas utiliser un avec le sur le prototype d'une fonction mais, ça n'a pas de sens de mon point de vue sauf si on à des raison valable.
à bientôt
28 juil. 2014 à 14:22
Oui, à condition de préciser après le const la déclaration de la variable (ici int param;).
Cela avait la côte en K&R, mais bon, on ne la rencontre plus beaucoup aujourd'hui.