aboutsummaryrefslogtreecommitdiff
path: root/semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <anhgelus@anhgelus.world>2025-02-13 17:42:52 +0100
committerAnhgelus Morhtuuzh <anhgelus@anhgelus.world>2025-02-13 17:42:52 +0100
commita1a5447b8b040b100bad89766066ae4ba8d6d920 (patch)
treef255a6da6b6af8daa1906bd834131052b64a2ca5 /semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md
parent755d27882e2cb21a5e30b6854bea8e4454f2328d (diff)
Ajout de la semaine des cours du 7 au 13 février
Diffstat (limited to 'semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md')
-rw-r--r--semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md49
1 files changed, 49 insertions, 0 deletions
diff --git a/semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md b/semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md
new file mode 100644
index 0000000..4d259b5
--- /dev/null
+++ b/semestre 2/informatique/5- Tableaux à plusieurs dimensions & strings.md
@@ -0,0 +1,49 @@
+---
+tags:
+ - sorbonne
+ - informatique
+semestre: 2
+---
+## Tableaux à plusieurs dimensions
+Pour déclarer un tableau à deux dimensions, on fait :
+```c
+T tab[n1][n2];
+```
+où `n1` et `n2` sont deux entiers naturels non nul et `T` est un type valide.
+
+On a que `tab[0][a] = *(tab+a)` et que `tab[b][a] = *(tab+a+n2*b)` (`n2` étant la taille de tableau à l'intérieur)
+|> besoin de connaître la taille des deux lignes !
+|> d'une manière plus concrète, on a `tab[4][5]`, donc `tab[2][3] = *(tab+3+2*5)`
+## Strings
+Un caractère est de type `char` et peut se noter avec un entier ou un caractère ASCII avec `''` (i.e. `'a'`)
+|> est enregistré sur un octet : 256 valeurs possibles
+|> est affichable avec `%d` (car est un petit int) et `%c`
+|> ne contient pas assez de place pour tout afficher : problème pour encoder les accents -> besoin d'utiliser une autre table d'encodage
+
+> [!NOTE] Interprétation des `char`
+> En C, on peut remplacer n'importe quelle valeur entière `char` par leur équivalent en caractère
+
+Les chaînes de caractères sont entre `""` (i.e. `"hello world"`) : ce sont des `char[]`
+|> se termine ***toujours*** par `\0` (est le 0 ou le null des chaînes de caractères)
+|> on peut les déclarer classiquement avec `char s[8] = "bonjour";`
+|> on les affiche avec `%s`
+
+> [!info] Le `\0` est sous-entendu avec les guillemets, mais pas quand on déclare manuellement (avec un tableau)
+
+> [!warning] Différence entre strings et tableau de caractère
+> Si on n'utilise pas de `\0` dans un tableau, cela devient un array de caractère
+
+> [!error] Initialisation d'un string
+> Quand on initialise et assigne un string, on doit bien faire attention à ce que le tableau soit assez grand
+
+> [!warning] On ne peut pas modifier une chaîne de caractère statique
+> i.e. `char *p = "hello"` n'est pas modifiable
+>
+> Par contre, `char s[] = "hello";`, `char *p = s;` et `p[0] = 'H'` est valide
+
+La bibliothèque de gestion des strings est `string.h`
+|> permet de compter la taille d'un string avec `strlen`
+|> *voir poly pour les autres fonctions*
+
+> [!warning] Les chaines de caractère sont des arrays !
+> Donc, quand on doit renvoyer une nouvelle chaîne de caractères, on doit utiliser `malloc` pour éviter d'avoir un segmentation fault !