함수 포인터를 이용해 주소를 매개변수로 받아 기존의 복사된 개체를 변경하는 것이 아닌 주소가 가리키는 값을 변경한다.
#include <iostream>
using namespace std;
void swap(int *px, int *py) {
int temp = *px;
*px = *py;
*py = temp;
}
int main() {
int x = 10, y = 20;
cout << x << endl;
cout << y << endl;
swap(&x, &y);
cout << x << endl;
cout << y << endl;
return 0;
}
10
20
20
10
#include <iostream>
using namespace std;
struct Weapon {
int price;
int power;
};
void upgrade(Weapon* pWeapon) {
(*pWeapon).price += 10;
pWeapon->power += 10;
}
void print(const Weapon* weapon) {
cout << weapon->price << endl;
cout << weapon->power << endl;
}
// const를 붙여 상수화하여 값이 변경되는 것을 방지
void func(int argc, char (*argv)[5]) { // 5개 문자를 가리키느 포인터
for (int i = 0; i < argc; i++)
cout << argv[i] << endl;
}
int main() {
Weapon weapon{ 10, 20 };
upgrade(&weapon);
print(&weapon);
char strs[][5] = { "abcd", "efgh" };
func(2, strs);
}
20
30
abcd
efgh