[C/C++] 구조체

Hyo Kyun Lee·2022년 8월 8일
0

C/C++

목록 보기
2/23

1. 구조체

C언어가 제공하는 기본형 및 자료형 type의 변수들을 이용하여, 사용자 정의 type의 변수를 만드는 과정 혹은 변수 구조를 말한다.

2. 키워드

구조체를 선언할 경우 struct 키워드를 사용하며, 전체적인 구조나 사용방법이 java class와 매우 비슷하다.

다만 문자열을 할당해줄 경우 특정 함수를 사용해야 하는 등, 상이한 부분이 많으니 이 점을 유의해야 한다.

3. 구조체 정의 및 할당

구조체는 먼저 정의를 해야하고, 그 후 할당까지 해야 사용할 수 있다.

참고로 구조체를 선언하면 Stack 메모리에 구조체 크기만큼의 공간이 할당되어 저장된다.

  • 정의
typedef struct{
	char name[20];
    int age;
} Person
  • 할당
struct Person p1;     // 구조체 변수 선언

strcpy(p1.name, "홍길동"); //구조체 문자열 변수 할당
p1.age = 30; //구조체 기본형(정수) 변수 할당

특히 strcpy 함수를 통해 문자열 변수를 할당하는 부분을 잘 살펴보고 활용할 수 있도록 하자.

4. 데이터 할당(추가)

구조체 내부 멤버(변수)에 데이터를 할당하는 과정은, "구조체 포인터가 가르키는 주소에 데이터(값)을 할당한다는 의미와 같다."

구조체에 데이터를 할당하는 방법은 크게 두가지가 있다.
(위에서의 Person 구조체를 활용하면)

화살표(arrow)를 이용할 경우

Student *pointer = malloc(sizeof(studnet));
//memory allocated

pointer -> age = 25;
strpy(pointer -> name, "hyokyun");
  //pointer가 가르키는 주소로 들어가, 멤버를 할당한다.

온점(역참조)를 이용할 경우

(*pointer).age = 25;
strcpy((*pointer).name, "hyokyun");
//pointer가 가르키는 주소를 기재하되, (*)형식으로 할당한다.

5. 참고자료

구조체 정의와 할당 - https://dojang.io/mod/page/view.php?id=408
구조체 할당(arrow) - https://wonit.tistory.com/530
구조체 할당(온점/역참조) - https://neuro.tistory.com/16, https://drawingprogrammer.tistory.com/48

0개의 댓글