• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

선생님, 코드 한번 봐주세요.

19.08.12 23:53 작성 조회수 115

0

#include <iostream>

using namespace std;

void swap(int& a, int& b);
void swap(int* (&a), int* (&b));

int main()
{
 int a, b;
 int* pa = &a, * pb = &b;
 cout << "정수를 입력해보자.";
 cin >> a;
 cin >> b;
 cout << "정수 : " << a << " " << "정수 b : " << b << endl;

 swap(a, b);
 cout << "swap후의 값." << endl;
 cout << "정수 a : " << a << " " << "정수 b : " << b << endl;
 cout << "포인터 a : " << pa << " " << "포인터 b : " << pb << endl;
 cout << endl;

 swap(pa, pb);
 cout << "swapp후의 값." << endl;
 cout << "정수 a : " << a << " " << "정수 b : " << b << endl;
 cout << "포인터 a : " << pa << " " << "포인터 b : " << pb << endl;
}

void swap(int& a, int& b) {
 int temp = a;
 a = b;
 b = temp;
}
void swap(int* (&a), int* (&b)) {
 int *temp = a;
 a = b;
 b = temp;
}

 

이렇게 작성했는데요, 1과 2를 출력하면

"2 1" 로밖에 출력이 안됩니다.

함수로 바뀐 값들은 출력이 안됨은 당연하고, 문자열도 전부 출력이 안됩니다.

왜이런거죵?? ㅠㅜ

답변 1

답변을 작성해보세요.

0

유영재님의 프로필

유영재

2019.08.25

#include <iostream>

using namespace std;

void swap(int& a, int& b);
void swapp(int *a, int *b);

int main()
{
	int a, b;
	int* pa = &a, *pb = &b;
	cout << "정수를 입력해보자.";
	cin >> a;
	cin >> b;
	cout << "정수 : " << a << " " << "정수 b : " << b << endl;

	swap(a, b);
	cout << "swap후의 값." << endl;
	cout << "정수 a : " << a << " " << "정수 b : " << b << endl;
	cout << "포인터 a : " << pa << " " << "포인터 b : " << pb << endl;
	cout << endl;

	swapp(pa, pb);
	cout << "swapp후의 값." << endl;
	cout << "정수 a : " << a << " " << "정수 b : " << b << endl;
	cout << "포인터 a : " << pa << " " << "포인터 b : " << pb << endl;
}

void swap(int& a, int& b) {
	int temp = a;
	a = b;
	b = temp;
}
void swapp(int *a, int *b) {
	int temp = *a;
	*a = *b;
	*b = temp;
}