Outils pour utilisateurs

Outils du site


developpement:cpp:modern

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
developpement:cpp:modern [2022/12/13 15:40] – [Arrays] sgariepydeveloppement:cpp:modern [2022/12/14 15:46] (Version actuelle) – [Assert] sgariepy
Ligne 259: Ligne 259:
     * Accessible via sa position     * Accessible via sa position
     * Ont un index de base 0     * Ont un index de base 0
 +
 +Points importants:
 +
 +  * Les arrays n'est pas un pointeur
 +    * ''<type>[size]'', e.g. ''int arr[]'' est ''int[5]''
 +  * Mais accessible via la syntaxe de pointeurs
 +  * Un array peut être assigné à un tableau
 +    * Le pointeur détient l'adresse du premier élément
 +    * Les autres éléments peuvent être accédés via l'index ou en incrémentant le pointeur
 +
 +<code cpp>
 +int arr1[5];  // tableau non initialisé
 +int arr2[5]{}; // éléments initialisés avec 0
 +int arr3[5]{ 1, 2, 3, 4, 5 }; // initialisé avec les valeurs spécifiés
 +</code>
 +
 +<code>
 +int *p = arr3;
 +*(p + 2) = 800; // Le 3e élément (index 2) aura la valeur 800
 +</code>
 +
 +==== Passer un tableau à une fonction ====
 +
 +<code cpp>
 +void Print(int *ptr, int size) {
 +    for (int i = 0; i < size; ++i) {
 +        std::cout << ptr[i] << ' ';
 +        //std::cout << *(ptr + i) << ' '; // moins lisible, donc la façon précédente est préférable
 +    }
 +}
 +
 +Print(arr3, sizeof(arr3) / sizeof(int));
 +</code>
 +
 +En tant que référence:
 +
 +<code cpp>
 +template<typename T, int size>
 +void Print(T(&ref)[size]) {
 +    for (int i = 0; i < size; ++i) {
 +        std::cout << ref[i] << ' ';
 +    }
 +}
 +
 +int(&ref)[5] = arr3;
 +Print(arr);
 +</code>
  
  
Ligne 3337: Ligne 3384:
   * may or may not cause the program to terminate   * may or may not cause the program to terminate
  
- +<code> 
- +#include <stdexcept> 
 +... 
 +throw std::runtime_error{"An error occured"}; 
 +</code>
  
 ====== I/O and Streams ====== ====== I/O and Streams ======
Ligne 4316: Ligne 4365:
 </code> </code>
  
 +
 +
 +====== Assert ======
 +
 +<code cpp>
 +#include <cassert>
 +...
 +assert(!Empty());
 +</code>
  
  
developpement/cpp/modern.1670942426.txt.gz · Dernière modification : 2022/12/13 15:40 de sgariepy