참조와 포인터

BS_Lee·2024년 5월 8일
0

C++

목록 보기
14/15
// 참조 대상
int n = 4;

// n과 같은 공간에 살고있는 a.
int &a = n;

// n의 주소를 가지고 있는 a.
int a = &n;

코드예제

int summary(){
	
	int n = 4;
	
	return n;
}

int main() {
    
    int *nn = summary(); //오류 발생!!
	
	return 0;
}

summary에서 발생된 n을 넘겨주고 싶지만 n은 summary의 함수가 끝나는 동시에 메모리에서 삭제가 된다. 그렇기 때문에 n을 계속 살려주고싶으면, n을 new연산자를 통해서 힙영역으로 이동 시켜야된다.

#include <iostream>

int* summary(){
	
	int *n = new int;
	
	*n = 4;
	
	return n;
}

int main() {
    
    int *nn = summary();
    
    std::cout << nn;
    std::cout << *nn;
	
	return 0;
}

summary로부터 전달받은 n은 그대로 살아있다.

profile
설명이 가능할 때까지 공부하기.

0개의 댓글