#include <iostream>
void swap (int *a, int *b) {
int *k = a;
a = b;
b = k;
}
int main() {
int alpha = 5;
int beta = 34;
swap (alpha,beta);
std::cout << alpha << std::endl;
std::cout << beta << std::endl;
int *ab = new int();
*ab = 34;
int *cd = new int();
*cd =64;
swap(ab,cd);
std::cout << *ab << std::endl;
std::cout << *cd << std::endl;
}
첫 번째 질문 : 전달 매개 변수로 포인터가있는 함수에 값을 전달할 수 있습니까?포인터를 함수에 전달 하시겠습니까?
두 번째 질문 : 어떻게 교환 할 수 있습니까? 그것은 포인터를 바꿉니다. 그러나 그것이 나왔을 때 알파와 베타의 가치가 여전히 동일하지 않아야합니다.
세 번째 질문 : 포인터를 전달할 때 함수가 작동하지 않는 이유는 무엇입니까? 일반 변수를 전달할 때 작동합니다.
네 번째 질문 : void swap(int *a, int* b)
의 기능은 int *a
과 int *b
입니다.
당신의'using namespace std;'가 당신을 망치고 있습니다. 표준 스왑 함수는 실제로 실제로 구현됩니다. 너는 그렇지 않아. – chris
'swap (& alpha, &beta);' –
@chris 사실 첫 번째 호출에서 우연히'std :: swap'을 사용합니다 :). – 101010