This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
in204:cpp:syntax:const [2019/09/16 13:59] 147.250.35.104 created |
in204:cpp:syntax:const [2022/11/18 10:50] (current) |
||
---|---|---|---|
Line 6: | Line 6: | ||
<code cpp> | <code cpp> | ||
- | const int x = 3 ; // Introduit une variable de type x qui ne peut pas être | + | const int x = 3; // Introduit une variable de type int qui ne peut pas être |
- | // modifiée. | + | // modifiée. |
int z = 4; | int z = 4; | ||
const int* y = &z; // Introduit un pointeur sur une variable de type entier qui | const int* y = &z; // Introduit un pointeur sur une variable de type entier qui | ||
// ne pourra pas être modifiée. | // ne pourra pas être modifiée. | ||
- | int const* m = &z ; // Introduit un pointeur constant. C’est le pointeur qui ne | + | int * const m = &z ; // Introduit un pointeur constant. C’est le pointeur qui ne |
// peut pas être modifié et qui fera toujours référence à z. | // peut pas être modifié et qui fera toujours référence à z. | ||
// Par contre le contenu de z peut être modifié. | // Par contre le contenu de z peut être modifié. | ||
Line 22: | Line 23: | ||
int z = 4; | int z = 4; | ||
const int* y = &z; | const int* y = &z; | ||
- | int const* m = &z | + | int* const m = &z; |
+ | |||
+ | const int v = 3; | ||
+ | int const w = 4; | ||
int main() | int main() | ||
{ | { | ||
+ | | ||
int u = 3; | int u = 3; | ||
y = &u; // Ok, c'est la valeur pointée qui est constante, | y = &u; // Ok, c'est la valeur pointée qui est constante, | ||
Line 46: | Line 51: | ||
<code cpp> | <code cpp> | ||
+ | |||
+ | #include<iostream> | ||
int findIndex(int theValue, const int* anArray, int theArrayLength) | int findIndex(int theValue, const int* anArray, int theArrayLength) | ||
Line 59: | Line 66: | ||
int main() | int main() | ||
{ | { | ||
- | int* array = {2, 3, 2, 4, 7, 3, 8 }; | + | int array[7] = {2, 3, 2, 4, 7, 3, 8 }; |
- | std::cout << "Index du premier 3 dans le tableau" << findIndex(3) << std::endl; | + | std::cout << "Index du premier 3 dans le tableau " << findIndex(3, array, 7) << std::endl; |
} | } | ||
</code> | </code> | ||
- | le point qui avait pour type ''int*'' est automatiquement promu en tableau ayant comme type ''const int*''. | + | le tableau'array' qui avait pour type ''int*'' est automatiquement promu en tableau ayant comme type ''const int*''. |
==== Conversion d'un type non-modifiable en type modifiable ==== | ==== Conversion d'un type non-modifiable en type modifiable ==== | ||
Line 72: | Line 79: | ||
<code cpp> | <code cpp> | ||
- | |||
int buggyFindIndex(int theValue, const int* anArray, int theArrayLength) | int buggyFindIndex(int theValue, const int* anArray, int theArrayLength) | ||
{ | { | ||
Line 80: | Line 86: | ||
{ | { | ||
const_cast<int*>(anArray)[i] = 0; | const_cast<int*>(anArray)[i] = 0; | ||
+ | // converti anArray en int*, permettant de modifier les valeurs | ||
+ | // pointées par anArray. | ||
return i; | return i; | ||
} | } | ||
Line 86: | Line 94: | ||
} | } | ||
- | int main() | + | void main() |
{ | { | ||
- | int* array = {2, 3, 2, 4, 7, 3, 8 }; | + | int array[7] = {2, 3, 2, 4, 7, 3, 8 }; |
- | std::cout << "Index du premier 3 dans le tableau" | + | std::cout << "Index du premier 3 dans le tableau " << buggyFindIndex(3, array, 7) << std::endl; |
- | << buggyFindIndex(3) << std::endl; | + | std::cout << "Liste des éléments du tableau après exécution" << std::endl; |
+ | std::cout << "["; | ||
+ | int i = 0; | ||
+ | for(;i < 6; i++) | ||
+ | std::cout << array[i] << ", "; | ||
+ | std::cout << array[i] << "]" << std::endl; | ||
} | } | ||
+ | |||
</code> | </code> |