-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprograma2.c
58 lines (44 loc) · 1.23 KB
/
programa2.c
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
Para compilar:
$ gcc programa2.c -o p2
Para executar:
$ ./p2
*/
#include <stdio.h>
int main () {
// Repetindo o código do programa1.c
int x = 10;
printf("Valor de x: %i\n", x);
printf("Endereço de x: %p\n", &x);
printf("-----\n");
// Declara uma variável do tipo ponteiro,
// essa variável irá receber um endereço
int *y;
// Atribui o enderço de x à variável y
y = &x;
// Para acessar o valor que está armazenado
// no endereço, é necessário preceder a variável
// do tipo ponteiro com um *.
printf("Valor de y: %i\n", *y);
printf("Endereço de y: %p\n", y);
// Ao mudarmos o valor de x, note que
// como y acessa o endereço de x,
// ele também terá mudado.
x = 5;
printf("-----\n");
printf("Valor de x: %i\n", x);
printf("Valor de y: %i\n", *y);
/*
Em resumo:
Um endereço diz onde a variável está armazenada na memória.
Um ponteiro aponta para um endereço de memória.
O endereço é constante, mas o valor armazenado nele pode mudar.
Para variável normal:
- x acessa o valor
- &x acessa o endereço (referenciando)
Para ponteiro:
- y acessa o endereço
- *y acessa o valor (des-referenciando)
*/
return 0;
}