본문 바로가기
공부/c++

#12 구조체 | struct | c++

by 심심한 뾰 2021. 9. 20.
반응형

구조체의 정의를 보여주는 코드 예제부터 먼저 보여주면,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
 
struct Pair {int x,y;};
 
void func(Pair p){
  Pair q;
}
 
int main(){
  Pair p; 
 
  p.x = 3;
  p.y = 4;
  std::cout << "(" << p.x << ", " << p.y << ")" << std::endl;
}
cs

struct는 함수 안이 아닌, 맨 위에 정의하는 것이 가장 일반적이다.

Point는 x, y 변수를 묶어서 만든 구조체이다.

 

 

- 자유로운 형을 저장할 수 있는 구조체

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
 
struct Point {
  int x,y;
  char c;
  double d;
};
 
int main(){
  Point p;
}
 
cs

구조체 안에서는 하나의 형만 저장할 수 있는 것이 아니라, 여러 형을 한번에 저장할 수 있다.

위에 Point 구조체 안에 int, char, double형을 가진 변수들을 한꺼번에 저장한 것처럼, 여러 개의 형을 한꺼번에 저장할 수 있다. 

또, 매우 중요한 것은 구조체를 모두 정의한 후, ; 를 붙여야 한다는 점이다. 

ex) 위의 구조체에서 }옆에 ;를 붙임

; 를 까먹으면 실수로 에러를 잡는 데 시간이 많이 걸릴 수 있다.

 

 

구조체를 사용하여 조금 더 복잡한 예제를 보여주도록 하겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
struct ProductInfo {
  int num;
  char name[100];
  int cost;
};
 
int main(){
  ProductInfo myProduct = { 4797283"제주 한라봉"19900};
 
  std::cout << "상품 번호 : " << myProduct.num << std::endl;
  std::cout << "상품 이름 : " << myProduct.name << std::endl;
  std::cout << "가     격 : " << myProduct.cost << "원" << std::endl;
 }
cs

출력된 결과

순서대로, 연속적으로 정의한 변수들이 메모리 상에 저장되기 때문에, 

ProductInfo myProduct = { 4797283"제주 한라봉"19900};

이렇게 정의한 부분은 순서대로, num, name[10], cost에 차례대로 저장된다.

 

 

출처(source) - 유튜브 두들낙서님

https://www.youtube.com/c/%EB%91%90%EB%93%A4%EB%82%99%EC%84%9C

 

두들낙서

C/C++ 강좌를 올리고 있고 다른 컨텐츠는 할 수도 있고 안 할 수도 있는 채널. ▶ 두들낙서 지식공유 서버 참가하기: https://discord.gg/y4SXcjU

www.youtube.com

c++ 최고의 강좌,,

반응형