Skip to content
Snippets Groups Projects
Commit eed3eb9e authored by orestis.malaspin's avatar orestis.malaspin
Browse files
parents 93c7bca9 0994306d
Branches
No related tags found
No related merge requests found
Pipeline #6349 passed
% Programmation séquentielle en C % Base II
% Base II - Inspirés des slides de F. Glück % Inspirés des slides de F. Glück
% 25 septembre 2019 % 25 septembre 2019
# Représentation des variables en mémoire (1/N) # Représentation des variables en mémoire (1/N)
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
```C ```C
type *id; type *id;
``` ```
- Pour interprêter le contenu de ce qu'il pointe, il doit être typé. - Pour interpréter le contenu de ce qu'il pointe, il doit être typé.
- Un pointeur n'est rien d'autre qu'un entier (64bit sur x86-64, soit 8 octets). - Un pointeur n'est rien d'autre qu'un entier (64bit sur x86-64, soit 8 octets).
- Un pointeur peut être **déréférencé**: on accède à la valeur située à l'adresse mémoire sur laquelle il pointe. - Un pointeur peut être **déréférencé**: on accède à la valeur située à l'adresse mémoire sur laquelle il pointe.
...@@ -71,6 +71,10 @@ ...@@ -71,6 +71,10 @@
- Permettent d'avoir plusieurs chemins d'accès à une valeur. - Permettent d'avoir plusieurs chemins d'accès à une valeur.
- Lire **et** écrire en même temps dans un bout de mémoire devient possible: **danger**. - Lire **et** écrire en même temps dans un bout de mémoire devient possible: **danger**.
# Quiz: Les pointeurs
## [Quiz: Les pointeurs](https://cyberlearn.hes-so.ch/mod/evoting/view.php?id=1038526)
# La fonction `sizeof()` (1/N) # La fonction `sizeof()` (1/N)
- La fonction `sizeof()`{.C} permet de connaître la taille en octets: - La fonction `sizeof()`{.C} permet de connaître la taille en octets:
...@@ -124,7 +128,7 @@ int max(int a, int b) { ...@@ -124,7 +128,7 @@ int max(int a, int b) {
int main() { int main() {
int c = max(4, 5); int c = max(4, 5);
} }
``` ```
# Les fonctions (3/N) # Les fonctions (3/N)
...@@ -192,7 +196,7 @@ int main() { ...@@ -192,7 +196,7 @@ int main() {
- Pour modifier un variable, il faut passer son **adresse mémoire**. - Pour modifier un variable, il faut passer son **adresse mémoire**.
- L'adresse d'une variable, `x`{.C}, est accédé par `&x`{.C}. - L'adresse d'une variable, `x`{.C}, est accédé par `&x`{.C}.
- Un **pointeur** vers une variable entière a le type, `int *x`{.C}. - Un **pointeur** vers une variable entière a le type, `int *x`{.C}.
- La sytaxe `*x`{.C} sert à **déréférencer** le pointeur (à accéder à la mémoire pointée). - La syntaxe `*x`{.C} sert à **déréférencer** le pointeur (à accéder à la mémoire pointée).
# Les fonctions (7/N) # Les fonctions (7/N)
...@@ -213,6 +217,10 @@ int main() { ...@@ -213,6 +217,10 @@ int main() {
} }
``` ```
# Quiz: Les fonctions
## [Quiz: Les fonctions](https://cyberlearn.hes-so.ch/mod/evoting/view.php?id=1038560)
<!-- TODO quiz; <!-- TODO quiz;
```C ```C
void set_to_two(int *a) { void set_to_two(int *a) {
...@@ -358,7 +366,7 @@ int main(void) { ...@@ -358,7 +366,7 @@ int main(void) {
```C ```C
int x[10]; int x[10];
for (int i = 0; 0 < 10; ++i) { for (int i = 0; i < 10; ++i) {
x[i] = 0; x[i] = 0;
} }
int j = 0; int j = 0;
...@@ -389,7 +397,7 @@ do { ...@@ -389,7 +397,7 @@ do {
printf("tab[%d] = %d\n", i, tab[i]); printf("tab[%d] = %d\n", i, tab[i]);
} }
} }
// n doit venir avant tab, [n] opionel // n doit venir avant tab, [n] optionnel
void bar(int n, int tab[n]) { void bar(int n, int tab[n]) {
for (int i = 0; i < n; ++i) { for (int i = 0; i < n; ++i) {
printf("tab[%d] = %d\n", i, tab[i]); printf("tab[%d] = %d\n", i, tab[i]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment