목록프로그래밍(c++)/따배씨++(기초) (4)
정체불명의 모모
이번 시간은 포인터와 정적 배열에 대해 알아보겠습니다. if( 포인터 == Array) ? 답 : True 다만 Array는 자료구조 입니다. 근데 왜? 포인터와 같다고 하는걸까요??? 이제 부터 알아 볼까요?? 아래는 int 데이터형 5개의 데이터가 담긴 배열입니다. 정확히는 다섯개의 연이어져 있는 int의 값을 저장하는 메모리의 첫번째 Byte의 주소 입니다. int array[5] = { 1,2,3,4,5}; 그래서 array는 '포인터' 라고 하는 것 입니다. cout
포인터의 기초에 대해 알아 봅시다! 포인터 : 변수의 주소를 담는 '변수'!
ㅁ 주소에 의한 인수 전달 : 함수의 pointer의 매개변수를 받아 오는 것 정리 포인터 호출 -> 값에 의한 전달과 같다. 실제로 밑의 코드의 컴파일한 결과 값을 보면 foo함수안에서 ptr의 주소를 받을때, 매개변수의 주소와 다르게 출력된것을 확인 할 수 있다. 이 뜻은, 포인터인 매개변수의 값을 복사하여 사용한다는 것을 알 수 있다. 하지만, 포인터의 특성상 참조자와 같이 값 변경은 되지만, 메모리 복사가 일어난다는 것을 알 수 있다.
1. 값에 의한 인수 전달(call by value) : 아래 코드를 보면 doSomething에 들어간 값의 주소는 일치 하다. (변수를 만들어서 넘겨도 doSomething안에 들어가면 넘겨준 매개변수의 주소와는 다른 새로운 주소에 매개변수의 값을 복사 시킨다.) 값의 전달은 매개변수의 값만 복사해서 사용하기 때문에, 매개변수에 직접적인 영향을 줄 수 가 없다. 2. 참조에 의한 인수 전달(call by reference) : 함수의 매개 변수의 주소를 전달해주는 방식 c++은 함수의 return 값이 하나 밖에 되지 않아, 함수 내에서 변경 되고 싶은 값을 by reference로 매개변수를 받아 직접적으로 값을 바꿔줍니다. !! 참고 !! 1. 변수로 인자를 전달해야 한다. 2. 변수로 인자를 전..