struct MyStruct
{
int first;
int second;
// ... 추가 가능
int Sum()
{
return first + second; // 여기서는 . 을 찍지 않아도 된다
}
};
MyStruct a;
a.first = 123; // 4 byte
a.second = 456; // 4 byte
MyStruct *ptr_a = &a;
// -6 으로 변경하면?
ptr_a -> first = -6;
a.first
와 ptr_a -> first
는 같다인덱싱을 먼저
한 다음에 사용해야함pairs[i].first
로 사용해야한다. MyStruct pairs[10];
for (int i = 0; i < 10; i++)
{
// pairs->first = i; // error
// pairs->second = i * 10; // error
pairs[i].first = i;
pairs[i].second = i * 10;
}
int main()
{
// member(.) operator
MyStruct a; // 구조체명 변수명;
a.first = 123; // 4 byte
a.second = 456; // 4 byte
cout << sizeof(a) << endl; // 구조체의 크기는 구조체 안의 멤버변수들의 크기의 총합보다 같거나 커야한다!!8 byte
cout << a.Sum() << endl; // 123 + 456 = 579
// 포인터는 member(->) operator가 화살표
MyStruct *ptr_a = &a;
// -6 으로 변경하면?
ptr_a -> first = -6;
cout << a.first << " " << a.second << " " << a.Sum() << endl;
// -6 456 450
cout << ptr_a->first << " " << ptr_a->second << " " << ptr_a->Sum() << endl;
// -6 456 450
// 똑같이 나옴
// 배열도 가능
// pairs를 쓰면 배열의 각각의 원소에 접근할 수 있다
// pairs 자체가 포인터
MyStruct pairs[10];
for (int i = 0; i < 10; i++)
{
// pairs->first = i; // 주의
// pairs->second = i * 10;
pairs[i].first = i; // 배열일 경우 인덱싱을 먼저 한 다음에 사용해야함
pairs[i].second = i * 10;
}
for (int i = 0; i < 10; i++)
{
cout << pairs[i].Sum() << endl; // pairs라는 배열에 먼저 인덱싱을 하고 Sum()함수를 적용
// 0
// 11
// 22
// 33
// 44
// 55
// 66
// 77
// 88
// 99
}
return 0;
}
/*
홍정모 연구소 https://honglab.co.kr/
*/
#include <iostream>
#include <cstring>
using namespace std;
struct MyStruct
{
int first;
int second;
// ... 추가 가능
int Sum()
{
return first + second; // 여기서는 . 을 찍지 않아도 된다
}
};
int main()
{
// member(.) operator
MyStruct a; // 구조체명 변수명;
a.first = 123; // 4 byte
a.second = 456; // 4 byte
cout << sizeof(a) << endl; // 구조체의 크기는 구조체 안의 멤버변수들의 크기의 총합보다 같거나 커야한다!!8 byte
cout << a.Sum() << endl; // 123 + 456 = 579
// 포인터는 member(->) operator가 화살표
MyStruct *ptr_a = &a;
// -6 으로 변경하면?
ptr_a -> first = -6;
cout << a.first << " " << a.second << " " << a.Sum() << endl;
// -6 456 450
cout << ptr_a->first << " " << ptr_a->second << " " << ptr_a->Sum() << endl;
// -6 456 450
// 똑같이 나옴
// 배열도 가능
// pairs를 쓰면 배열의 각각의 원소에 접근할 수 있다
// pairs 자체가 포인터
MyStruct pairs[10];
for (int i = 0; i < 10; i++)
{
// pairs->first = i; // 주의
// pairs->second = i * 10;
pairs[i].first = i; // 배열일 경우 인덱싱을 먼저 한 다음에 사용해야함
pairs[i].second = i * 10;
}
for (int i = 0; i < 10; i++)
{
cout << pairs[i].Sum() << endl; // pairs라는 배열에 먼저 인덱싱을 하고 Sum()함수를 적용
// 0
// 11
// 22
// 33
// 44
// 55
// 66
// 77
// 88
// 99
}
return 0;
}
출처 : 홍정모 유튜브