struct (구조체)
구조체를 매개변수로 넘길 때
void fuc(구조체);
* 구조체를 매개변수로 넘기거나 대입하는 것만으로 복사가 일어난다. 알아서 전부 복사해주니 편하다.
* 구조체의 크기가 클 경우, 매번 일어나는 복사는 무거울 수 있다.
void fuc(*구조체);
* 단 4바이트!
* 복사가 훨씬 안전해. 참조의 경우 원본 손실이 발생할 수 있다.
* (*구조체).변수 = 값;
* 구조체->변수 = 값;
(둘 중 하나를 써야 함)
구조체에 배열을 넣을 때
1. 배열 포인터만 넣을 때
typedef struct {
char* name1;
char* name2;
char* name3;
char* name4;
} name4_t;
↑ 크기가 단 16바이트! 얕은 복사와 유동적인 주소값이라는 제한적 사용에 주의하자.
2. 배열 전체를 넣을 때
typedef struct {
char name1[10];
char name2[10];
char name3[10];
char name4[10];
} name4_t;
↑ 구조체 대입만으로 모든 배열 복사가 일어난다. 크기가 엄청날 수 있다.
귀여운 그림은 쭐어님이 그리셨습니다.
반응형
'C' 카테고리의 다른 글
Bit Flags (0) | 2020.12.23 |
---|---|
Byte Padding (0) | 2020.12.23 |
구조체 (0) | 2020.12.22 |
rewind 함수, fseek 함수, ftell 함수 (0) | 2020.12.21 |
strcpy 함수와 strcat 함수 (2) | 2020.12.20 |