구조체
구조체 개념
struct MyStructure {
int myNum;
char myLetter;
};
구조체 또한 배열처럼 여러 데이터를 그룹으로 묶어 하나의 자료형으로 정의하고 사용하는 자료형입니다.
하지만 배열은 같은 자료형만 저장이 가능하지만 구조체는 서로 다른 다양한 자료형을 하나로 묶을 수 있습니다.
자료를 일정한 단위 형식으로 구성하는데 이를 레코드라고 합니다. 이런 레코드를 구성하는 항목을 필드라고 하고, 레코드가 여러개 모이면 파일이라고 합니다. 이런 레코드를 구조체를 사용해서 정의할 수 있습니다.
파일
레코드 | ||
필드 | 필드 | 필드 |
구조체 선언
// 선언 형식
struct 구조체형이름 {
자료형 항목1;
자료형 항목2;
...
자료형 항목n;
};
// 사용형식
struct 구조체이름 구조체변수이름;
구조체는 구조체형 이름, 자료형, 데이터 항목으로 구성됩니다.
구조체를 사용하는 단계 정리
- 구조체형 선언 : 내부 구조를 정의
- 구조체 변수 선언 : 구조체형에 따른 변수를 선언
- 구조체 변수의 사용 : 내부 항목에 데이터를 저장하고 사용
struct person {
char name[5];
int age;
int cm;
};
만약 사람이라는 구조체를 만든다면 위에 코드와 같이 작성할 수 있습니다.
person을 메모리 상 구조를 그리면 위에 사진과 같이 생성됩니다.
여기서 구조체를 사용하게 되면
struct person kim, lee, park;
사진과 같은 형식으로 생성됩니다.
구조체 변수를 선언하는 방식은 3가지가 있습니다.
struct person {
char name[5];
int age;
int cm;
} person kim;
구조체형을 선언한 후에 구조체 변수 선언 방식과
struct person {
char name[5];
int age;
int cm;
} lee;
구조체형과 구조체 변수를 연결해서 선언하는 방식과
struct {
char name[5];
int age;
int cm;
} park;
구조체형 이름을 생략하고 구조체 변수 이름만 선언 하는 방식이 있습니다.
구조체 변수의 초기화
구조체는 변수와 마찬가지로 구조체 변수를 선언하면서 변수의 초기값을 설정합니다.
일반 변수는 값을 하나만 가지지만 구조체는 내부 항목이 여러 개 일 수 있으므로 내부 항목의 자료형과 개수를 순서에 맞추어 초기값을 설정합니다.
struct person kim = {"kim", 20, 70};
순서 대로 구조체 변수의 내부 데이터 항목에 대입됩니다.
데이터 항목의 참조
구조체 변수에 있는 각 데이터 항목을 참조하려면 구조체 연산자를 사용해야 합니다.
구조체 연산자 | 설명 |
점 참조연산자 (.) | 구조체 변수의 데이터 항목을 지정 |
화살표 연산자(->) | 구조체형 포인터에서 포인터가 가리키는 구조체 변수의 데이터 항목을 지정 |
점 연산자(.)
struct person kim;
kim.name = "kim";
kim.age = 20;
kim.cm = 70;
점 연산자는 구조체 변수에 있는 데이터 항목을 개별적으로 지정할 때 사용합니다.
화살표 연산자(->)
struct person kim;
struct person *kims = &kim;
kims->name = "kim";
kims->age = 20;
kims->cm = 70;
포인터는 주소를 저장하는 변수이기 때문에 모든 자료형에 사용할 수 있어 구조체형에도 포인터를 사용할 수 있습니다.
구조체형 포인터에서 포인터가 가리키는 구조체 변수의 데이터 항목을 지정하려면 화살표 연산자를 사용해야합니다.
구조체 연산
변수에서는 비교연산을 할 수 있지만 구조체는 비교연산을 할 수 없습니다. 하지만 구조체에서는 데이터 항목 참조 연산, 구조체 변수 복사, 구조체 변수의 주소 구하기 연산등을 할 수 있습니다.
데이터 항목 참조 연산
점 연산자와 화살표 연산자를 이용해서 구조체의 데이터 항목을 개별적으로 참조 할 수 있습니다.
구조체 변수 복사 연산
struct person kim, lee, park[5];
kim = lee;
kim = park[2];
park[0] = park[3];
같은 구조체에 있는 구조체 변수라면 변수들 끼리 내용을 한 번에 복사 연산을 할 수 있습니다.
구조체 변수의 주소 구하기 연산
struct person kim, lee[5];
struct person *kims, *lees;
kims = &kim;
lees = lee;
포인터의 주소 연산자를 사용하여 구조체 변수의 주소를 구하거나 구조체 변수가 배열인 경우에는 배열의 특성에 따라 구조체 배열 변수의 이름에서 주소를 구할 수 있습니다.
출처
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
'개발 언어 (Language) > C' 카테고리의 다른 글
포인터 (0) | 2024.08.15 |
---|---|
문자열과 boolean (0) | 2024.08.15 |
배열 (0) | 2024.08.15 |
break문과 continue문 (0) | 2024.08.15 |
반복문 (0) | 2024.08.14 |