This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
in204:cpp:syntax:const [2019/09/16 14:00] 147.250.35.104 [Conversion d'un type non-modifiable en type modifiable] |
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 88: | 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> | ||