반응형
c언어 메모리 할당 해제 (malloc / free) - 구조체 (struct)에 적용
구조체를 활용하는 기존 방식
ex. struct 'vehicle'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/* Passing structures using pointers */
#include <stdio.h>
// Structure vehicle
struct vehicle { int x, y; };
// type definition structure 'vehicle'
typedef struct vehicle vehicle;
// drive vehicle
struct vehicle drive(struct vehicle t, int dx, int dy) {
t.x = t.x + dx;
t.y = t.y + dy;
return t;
}
int main() {
struct vehicle truck = { 11, 27 };
printf("truck - x: %d, y: %d\n", truck.x, truck.y);
// Drive and print result
truck = drive(truck, 17, 23);
printf("truck - x: %d, y: %d\n", truck.x, truck.y);
}
|
cs |
메모리 할당을 활용하여 구조체 초기화 후 좌표 이동
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
|
/* Struct malloc */
#include <stdio.h>
#include <stdlib.h>
// Structure 'vehicle'
struct vehicle { int x, y; };
// typedef struct 'vehicle'
typedef struct vehicle vehicle;
// Allocate structure
vehicle *truck(int x0, int y0) {
vehicle *t = malloc(sizeof(struct vehicle));
t->x = x0;
t->y = y0;
return t;
}
// Drive truck
void drive(struct vehicle *t, int dx, int dy) {
t->x = t->x + dx;
t->y = t->y + dy;
}
int main() {
vehicle truckData = { 11, 27 };
vehicle *truck = &truckData;
printf("truck - x: %d, y: %d\n", truck->x, truck->y);
drive(truck, 17, 23);
printf("truck - x: %d, y: %d\n", truck->x, truck->y);
}
|
cs |
반응형
'C 언어 > C언어 기초' 카테고리의 다른 글
[C언어 #46] 입출력 - IO (Input Output) (0) | 2020.07.16 |
---|---|
[C언어 #45] 메모리 할당 (malloc) - 구조체 (struct) 초기화 (0) | 2020.07.16 |
[C언어 #43] 메모리 스택 (stack) - 팩토리얼 (factorial) 재귀함수 (0) | 2020.07.15 |
[C언어 #42] 메모리 할당 해제 (malloc / free) - 문자열 복사 (0) | 2020.07.14 |
[C언어 #41] 배열에 입력한 숫자의 합 (0) | 2020.07.12 |