나의 작은 valley

[cpp] 구조체(struct) 본문

Computer Science/[c++] 문법 정리

[cpp] 구조체(struct)

붕옥 아이젠 2023. 9. 17. 09:00
728x90

Cpp와 C언어에서는 변수와 함수들을 하나로 묶을 수 있고 이를 구조체라고 부른다. 

 

Basic

구조체의 기본적인 형태는 다음과 같다.

//MyStruct라는 자료형을 만든 것과 유사함.
struct MyStruct
{
	int first;
	int second;
	// ... 추가 가능

	//구조체 안에 정의된 함수
	int Add() 
	{
		return first + second;
	}
};

MySturct라는 이름의 구조체 안에 first,second라는 정수형 변수와 Add라는 함수가 있다.

 

 

구조체는 자료형을 새로 정의한 것과 유사하다.

int main()
{
    //자료형 선언처럼 사용
    MyStruct a; 

    //멤버 변수 호출
    //.을 찍으면 구조체 안의 있는 변수들에 접근 가능
    a.first = 123; 
    a.second = 456;

    //맴버 함수 호출
    cout << a.Add() << endl;

자료형 선언하듯이 선언하고 . 을 통해 변수나 함수들에 접근하는 것이 가능하다.

 

 

 

구조체 포인터

//구조체 포인터
MyStruct* ptr_a = &a;

//포인터가 맴버 변수에 접근할 때는 -> 를 사용한다.
cout << ptr_a->first << " " << ptr_a->second << " " << ptr_a->Add() << endl;

//포인터로 값 변경
ptr_a->first = -6;	//멤버 변수 first의 값 변경

a의 주소값을 가르키는 포인터 변수 ptr_a를 선언해주었다. 

 

포인터 변수가 맴버 함수 및 변수에 접근할 때는 .(점)이 아닌 ->를 사용한다. 

 

포인터이기 때문에 포인터가 가르키는 주소의 값을 바꾸면 실제 값이 바뀌는 것을 확인할 수 있다.

 

 

 

구조체 배열

//구조체 배열
MyStruct MyArr[10];
for (int i = 0; i < 10; i++) {
    MyArr[i].first = i;
    MyArr[i].second = i * 10;
}

for (int j = 0; j < 10; j++) {
    cout << MyArr[j].Add() << " ";
    //0 11 22 33 44 55 66 77 88 99
}

구조체 배열을 선언했다. 이떄 공간을 10개 확보를 했는데 이는 struct를 각기 다른 이름의 변수로 10번 선언한 것과 유사하다. 

 

for문을 돌면서 각각의 원소들이 가르키는 first, second값들을 지정해주고 이를 2번째 for문에서 출력하고 있다.

728x90

'Computer Science > [c++] 문법 정리' 카테고리의 다른 글

[cpp] 텍스트 파일 입출력  (0) 2023.09.17
[cpp] 헤더 파일  (0) 2023.09.17
[cpp] 동적할당  (0) 2023.09.17
[cpp] 함수  (0) 2023.09.17
[cpp] 포인터  (0) 2023.09.17
Comments