일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 문제풀이
- 공부일지
- 알고리즘
- 정보처리산업기사
- 코딩봉사
- BFS
- MYSQL
- python
- 자바
- 스프링
- 데이터베이스
- C++
- 백준알고리즘
- 백준
- 코딩교육봉사
- java
- 1과목
- 소프티어
- 코틀린
- SQL
- kotlin
- 백준 알고리즘
- SW봉사
- 회고
- 시나공
- 프로그래머스
- softeer
- programmers
- CJ UNIT
- 파이썬
- Today
- Total
JIE0025
[C++] 구조체 본문
구조체는 연관있는 데이터를 하나로 묶어주는 씨언어 문법중 하나였다.
구조체 선언, 구조체 변수 선언
struct book
{
char title[20];
char author[20];
int price;
};
struct Book mybook;
book 이라는 구조체를 만드는 예제이다.
- 구조체 선언시엔 반드시 마지막에 세미콜론(;) 을 써주어야한다.
- 구조체 안에 있는 변수는 구조체 멤버라고 한다.
구조체 멤버로 접근
구조체변수.멤버
myBook.author
구조체 변수 초기화
구조체변수 = {멤버1초기값, 멤버2초기값...}
mybook = {"C++","윤성우",30000}
함수와 구조체
1) 함수의 인수로 구조체의 인수를 전달> 구조체의 복사본을 이용해 작업함
struct wallet{
int card;
int cash;
};
int calculation (int money, int used){
return money - used;
}
int main(){
wallet myWallet = {100000, 200000};
int current= 0;
current = calculation(myWallet.cash + myWallet.card, 30000);
cout << current <<endl;
return 0;
}
2) 구조체의 주소를 전달 > 호출된 함수에서 원본 구조체에 직접 접근
struct wallet{
int card;
int cash;
};
int calculation (wallet * w, int used ){
int all = w -> cash + w ->card
return all - used;
}
int main(){
wallet myWallet = {100000, 200000};
int current= 0;
current = calculation(&myWallet, 30000);
......
return 0;
}
중첩 구조체 + + 구조체에 함수 정의
구조체 정의시 멤버로 다른 구조체를 포함할 수 있다.
#include <iostream>
#include <string>
using namespace std;
struct Person {
int age;
string name;
string address;
};
struct PartTimer {
int salary;
struct Person p;
void sayHello() {
cout << "hello" <<endl;
}
};
int main() {
struct Person hong = { 20, "gildong", "seoul" };
struct PartTimer manager = { 3000000, hong };
cout << "매니저 이름은 " << manager.p.name <<endl;
manager.sayHello();
return 0;
}
- 모든 PartTimer 구조체 변수는 sayHello라는 함수를 공유한다.
각각의 변수가 자신의 함수를 가진 것과 같은 효과와 결과
enum 상수
구조체 내에서만 유효한 상수를 정의하기 위해 enum을 사용한다.
#include <iostream>
#include <string>
using namespace std;
struct Car {
enum
{
ID = 1,
MAX_SPEED = 200
};
} c;
int main() {
cout << c.ID;
return 0;
}
구조체 함수 외부에 정의
#include <iostream>
#include <string>
using namespace std;
struct Car {
enum
{
ID = 1,
MAX_SPEED = 200
};
void ShowCarState();
void Accel();
} c;
void Car::ShowCarState() {
// show car state
}
void Car::Accel() {
// accel
}
위의 예제를 보면 알수있겠지만
구조체 밖에 함수를 정의할경우
1) 구조체이름 :: 함수이름 (){ } 으로 정의
2) 구조체 안에 함수정의시 무조건 인라인 처리 되는데, 이 의미가 사라짐 >> 인라인 유지하기 위해 inline 키워드 사용해서 명시적으로 처리해줘야한다.
인라인 함수 내용은 여기~!
inline : C++에서 C언어의 매크로함수의 기능을 그대로 이어받지만 보통 정의하는 함수와 같이 선언하는 함수
https://jie0025.tistory.com/172?category=1023432
c++ 은 클래스의 일종으로 간주된다. ( 그래서 구조체 안에 함수 정의가 가능한것)
이제 클래스를 알아보자.
'기타 학습 > Language' 카테고리의 다른 글
[ C++ ] 객체지향 프로그래밍의 개념, 정보은닉과 캡슐화 (0) | 2022.05.16 |
---|---|
[C++] 클래스(class), 객체(Object) (0) | 2022.05.11 |
[C++] 동적할당 new , 소멸 delete (0) | 2022.05.10 |
[C++] 참조자 (&) (0) | 2022.05.10 |
[C++] C언어 기본 복습 (const , 메모리공간, malloc, free, call-by-value, call-by-reference ) (0) | 2022.05.06 |