C vs. C++ com Exemplos
Structs
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
// em C (precisamos de typedef)
typedef struct {
int x, y;
} Vec2f;
// em C++
struct Vec2f {
int x, y;
};
Vec2f test_struct()
{
// inicializacao em C++
Vec2f vec = {};
Vec2f vec;
vec.x = 10;
vec.y = 20;
// Em C, ao tentar inicializar uma struct com todas as propriedades
// zeradas precisamos passar o zero.
Vec2f _vec = {0};
//
// Em C, outras maneiras de iniciar
//
Vec2f vec2 = {22, 33};
Vec2f vec3 = {.y = 22, .x = 33}; // inicializacao parametrizada (só funciona em C99)
// Em C, uma struct PURA é definida dessa maneira e para nomearmos ela como no C++,
// precisamos do typedef
// OBS.: Nao usamos assim. Isto é para fins didáticos!
struct {int x, y;} z;
z.x = 30;
z.y = 40;
printf("x is %d, y is %d\n", z.x, z.y);
printf("x is %d, y is %d\n", vec2.x, vec2.y);
printf("x is %d, y is %d\n", vec3.x, vec3.y);
// Em C
// Maneira enxuta de iniciar um bloco struct, com parametros nomeados e já retorná-los
return (Vec2f) {
.x = vec3.x,
.y = vec3.y
};
}
Esta postagem está licenciada sob
CC BY 4.0
pelo autor.