Bonjour,

J'ai sous les yeux un petit programme qui m'a aide a mieux comprendre le principe des pointeurs, en utilisant gdb. Je tiens simplement a vous en faire part, car je trouve cet exemple tres interressant.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
guillaume@ubuntu:~/C_code$ gdb -q ./a.out 
Reading symbols from /home/guillaume/C_code/a.out...done.
(gdb) list
1	#include <stdio.h>
2	
3	int main(void) {
4		int ma_var = 5; // mettre la valeur 5 dans ma varaible.
5		int *mon_ptr; // reserver 4 octets en memoire
6		
7		mon_ptr = &ma_var; // mettre l'adresse de ma_var dans mon_pointeur
8		return 0;
9	}
(gdb) break 8
Breakpoint 1 at 0x80483a7: file addressof.c, line 8.
(gdb) run
Starting program: /home/guillaume/C_code/a.out 
 
Breakpoint 1, main () at addressof.c:8
8		return 0;
(gdb) print ma_var // Que contient donc ma_var?
$1 = 5
(gdb) print &ma_var // Ou se trouve ma_var en memoire?
$2 = (int *) 0xbffff3c4  // a cette adresse
(gdb) print mon_ptr
$3 = (int *) 0xbffff3c4  // Que contient mon_ptr -> l'adresse de ma_var 
(gdb) print &mon_ptr // ou se trouve mon_ptr 
$4 = (int **) 0xbffff3c0 // pas la meme adresse memoire
(gdb) print *mon_ptr // Que montre du doigt mon_ptr
$5 = 5 // la valeur de ma_var
(gdb)
En esperant que ceci aidera certain.