C++ 함수 - 주소로 전달

진경천·2023년 9월 15일
0

C++

목록 보기
26/90

함수 포인터를 이용해 주소를 매개변수로 받아 기존의 복사된 개체를 변경하는 것이 아닌 주소가 가리키는 값을 변경한다.

#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

profile
어중이떠중이

0개의 댓글