반응형
구조체의 정의를 보여주는 코드 예제부터 먼저 보여주면,
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++' 카테고리의 다른 글
#14 이중 포인터와 typedef (0) | 2021.09.20 |
---|---|
#13 구조체 포인터 | c++ (0) | 2021.09.20 |
#11 typedef (0) | 2021.09.20 |
#10 배열을 매개변수로 넘기기 문제 | 띄어쓰기없이 출력하기 (0) | 2021.09.20 |
#9 배열을 매개변수로 넘기기 | c++ (0) | 2021.08.26 |