반응형
C언어 구조체에 관하여 알아보겠습니다.
구조체란 원하는 자료형 등 다양한 변수를 묶어서 새로운 자료형을 정의한다고 생각하시면 됩니다.
즉, 강아지의 이름, 나이, 몸무게를 각각의 변수가 아닌, 하나의 이름으로 저장이 필요할 때 사용합니다.
구조체의 키워드는 'struct'이며 아래와 같이 "struct 이름"을 사용하고 중괄호 안에 원하는 멤버변수를 선언해줍니다.
멤버변수란 그 구조체를 구성하는 변수입니다.
아래 예시를 직접 실행해보시기 바라며 구조체 멤버변수의 접근은 .(dot 연산자를 활용합니다.)
선언을 할때는 struct dog 등으로 구조체 키워드를 함께 사용해야 하거나,
typedef를 사용하여 키워드를 생략할 수 있습니다.
위 자료에서 Padding Bit란 사용한 변수는 20byte, 4byte, 4byte이지만 메모리 구조상 빈공간을 채우기 위하여,
컴파일러가 구조체의 멤버변수를 정렬하기 위해 추가적으로 삽입하는 비트입니다.
이러한 패딩 비트는 컴퓨터의 메모리 구조 및 효율성을 고려하여 자동으로 삽입됩니다.
즉, 큰 패딩비트의 목적은 메모리 정렬, 구조체의 크기조정을 위해 사용합니다.
메모리가 낭비되기도 하지 메모리 정렬을 통한 최적화를 위해 컴파일러가 자동적으로 사용합니다!
구조체도 결국 하나의 자료형으로 생각하면 되기에 포인터를 사용할 수 있습니다.
포인터를 사용하는 경우에는 멤버변수 접근연사자가 .(dot)이 아닌 '→'로 변경하여 사용합니다!
이상 C언어의 구조체에 관하여 알아봤습니다!
반응형
'전공공부 > C, C++' 카테고리의 다른 글
[C] 11. C언어 동적할당(동적메모리) (34) | 2024.02.28 |
---|---|
[C] 11. C언어 공용체 및 열거형 (11) | 2024.02.26 |
[C] 9. C언어 다차원 배열 및 다중 포인터 (32) | 2024.02.24 |
[C] 8. C언어 배열과 포인터의 연관 (36) | 2024.02.23 |
[C] 7. C언어 배열 및 포인터 (29) | 2024.02.20 |