함수를 호출하는 형태에 따라서 Call-by-reference와 Call-by-value를 구분한다.
일반적으로 함수에 인자를 넘겨줄 때, 단순히 그 값이 복사되어 전달이 이루어지는 형태가 Call-by-value이다.
때문에 여기서 pp에게 a를 인자로 넘겨줄때, 값만 a에서 매개변수 n으로 복사가 되기 때문에, 결과적으로는 변수 a의 값이 변하지 않는다.
반면 Call-by-reference는 메모리 접근에 이용되는 주소 값을 전달하는 형태이다.
이렇게 수정하면, pp 함수가 직접 메모리에 접근해서 a의 값을 증가시킬 수 있다.
이러한 이유 때문에 scanf도 &연산자를 사용하여 값을 저장시킨다.
'프로그래밍 > C' 카테고리의 다른 글
size_t, pid_t,ssize_t... (0) | 2022.05.03 |
---|---|
open, read 시스템콜을 이용한 파일 입출력 (0) | 2022.05.03 |
scanf, gets, fgets 차이 (0) | 2022.04.01 |
EOF(End Of File) (0) | 2022.03.31 |
C 배열 접근 (0) | 2022.03.25 |