반응형
728x170
짧게 설명하겠다.
주석에 달아놓았다.
내가 써놓은 참조 변수에 대해 보고 가면 더 좋다.
[프로그래밍언어(Programming Language)/C || C++] - C++문법/ 참조 변수, reference + 참조의 특성
#include <iostream>
using namespace std;
int func(int* ptr); // -> 포인터를 매개변수로 받음
int func(int& a); // -> 변수를 매개변수로 받지만 결국 해당 변수의 참조임
int main() {
int x = 3;
int* px = &x;
cout << x << " 수행전 값\n";
cout << func(px) << "\n";
cout << x << " 수행 후 값\n";
cout << func(x) << "\n";
cout << x << " 수행 후 값\n";
return 0;
}
//주소를 매개변수로 받게됨
//함수 매개변수에서의 *의미 ->
int func(int* ptr) {
*ptr = 4; // 해당 포인터가 가리키는 원본 값의 변경
//원본 값을 바꾸고 싶을 때에는 ptr이 주소이므로 *(내용 참조 연산자)를 사용해서 값을 바꿔야함
return *ptr;
}
//변수를 매개변수로 받게됨
//함수 매개변수에서의 &의미 -> 해당 변수의 주소를 전달함 -> 해당 함수에서 참조 변수가 됨
//즉, 아래에선 들어온 변수를 형식 매개변수 a를 초기화하는데 쓰는 것이다.
// int & a = (들어온 변수) -> 참조 변수 생성
int func(int& a) {
a = 5; //해당 변수를 참조해서 원본 값의 변경 (참조 변수이므로 바로 사용가능)
return a;
}
결과
위에 설명을 다 써놓았다.
함수를 만들 때
포인터로 받든지
참조 변수로 받든지
원본을 변경할 수 있다.
결국 어떻게 이용할 것이냐의 차이다.
728x90
반응형
그리드형
'프로그래밍 지식 > C++' 카테고리의 다른 글
C++문법/ 타입캐스팅, 캐스트 연산자 (0) | 2021.12.02 |
---|---|
C++문법/ 오버로딩, Overloading (0) | 2021.11.30 |
C 문법/ 소스파일부터 실행파일까지, From source To exe (0) | 2021.11.30 |
C++문법/ 디폴트 매개변수, Default Parameter (0) | 2021.11.30 |
C++문법/ 참조 변수, reference + 참조의 특성 (1) | 2021.11.29 |