/////
Search
📝

3월 14일(목)

학습목표

구조체 자료형을 이해하고 구현방법 알기
동적 메모리 할당

구조체(Structure)

타입이 다른 데이터들을 하나로 묶는 방법
배열 : 타입이 같은 데이터들을 하나로 묶는 방법
객체지향에서 Class를 공부할때, 구조체와 비교하는 경우가 많다(비슷한 성격 보유).

구조체 선언

1.
구조체형 선언 : 내부 구조 정의
2.
구조체 변수 선언 : 구조체형에 따른 변수 선언
3.
구조체 변수 사용 : 내부 항목에 데이터를 저장하고 사용
// 선언 형식 struct 구조체이름 { int 항목1; double 항목2; char 항목3; . . . } // 사용 형식 struct (구조체이름) (구조체의 변수이름)
C
복사

구조체 변수 선언 방법

// 1. 구조체형을 선언한 후, 구조체 변수 선언 : 가장 일반적 방법⭐️ struct employee { char name[10]; int year; int pay; }; struct employee Lee; // 2. 구조체형과 구조체 변수를 연결하여 선언 struct employee { char name[10]; int year; int pay; } Lee; // 3. 구조체형 이름을 생략하고 구조체 변수 이름만 선언 struct { char name[10]; int year; int pay; } Lee;
C
복사

구조체와 포인터

구조체 포인터를 이용한 데이터 항목 지정 방법
// 구조체 포인터의 화살표 연산자 사용 Sptr -> name = "susan"; Sptr -> year = 2014; Sptr -> pay = 4300; // 구조체 포인터의 참조 연산자 사용 : 괄호를 넣지 않으면 오류 발생 (*Sptr).name = "susan"; (*Sptr).year = 2014; (*Sptr).pay = 4300;
C
복사

구조체와 함수

구조체를 함수의 인수로 전달하는 경우

구조체의 복사본이 함수로 전달
만약 구조체의 크기가 크면 → 시간과 메모리 소요 시간 증가

구조체의 포인터를 함수의 인자로 전달하는 경우

시간과 공간을 절약
원본 훼손의 가능성이 존재
그렇기에 보통 함수인자로 전달할때는, 구조체 내용을 변경하는 로직보다는, 구조체 내용물을 통해 비교하거나 그런 행위를 많이 이용
const키워드를 사용
// const 키워드를 통해 포인터를 통한 구조체의 변경을 막음 int equal(struct student const *p1, struct student const *p2) { if(strcmp(p1->name,p2->name) == 0) return 1; else return 0; }
C
복사