IT 1학년을 위한 C 언어의 pass-by-value와 pass-by-reference 설명
TL;DR
가치 전달
변수를 선언하면 해당 변수에 대한 메모리가 할당됩니다. 함수를 호출하면
foo(variable_name)
메모리에 있는 해당 변수의 값을 함수에 전달한다는 의미입니다. 함수가 무엇을 하든 변수의 메모리에 영향을 주지 않습니다. 변수 값은 동일하게 유지됩니다.예제 코드:
#include <stdio.h>
void foo(int x);
int main() {
int a = 1;
foo(a);
printf("a: %d", a); //a: 1
return 0;
}
void foo(int x) {
x = 5;
}
위의 샘플 코드에서
foo(a)
를 호출하면 다음과 같습니다.foo(1)
foo(int x)
함수에서 x
에 대한 새 메모리를 할당한 다음 x
를 5
로 설정합니다.main
함수에서 a
는 여전히 1
입니다.참조에 의한 전달
언급했듯이 변수를 선언하면 해당 변수에 대한 메모리가 할당됩니다. 메모리에는 메모리 주소가 있습니다. 함수를 호출하면
foo(variable_memory_address)
메모리 주소를 함수에 전달한다는 의미입니다. 함수의 메모리 값을 변경하면 실제로 변수의 메모리 값이 업데이트됩니다. 그래서 변수 값이 변경됩니다.예제 코드:
#include <stdio.h>
void foo(int* px);
int main() {
int a = 1;
foo(&a);
printf("a: %d", a); //a: 5
return 0;
}
void foo(int* px) {
*px = 5;
}
위의 샘플 코드에서
foo(&a)
를 호출하면 다음과 같습니다.foo(0xAB)
를 호출합니다. (변수a
의 메모리 주소를 0xAB로 가정) foo(int* px)
함수에서 포인터px
를 생성하고 px
는 0xAB를 가리킵니다.*px = 5
를 설정하면 메모리 _0xAB의 값을 5
로 설정한다는 의미입니다.a
의 메모리에 있는 값이 5
로 변경되었으므로 이제 a
의 값은 5
가 됩니다. Reference
이 문제에 관하여(IT 1학년을 위한 C 언어의 pass-by-value와 pass-by-reference 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ryannz/explaining-pass-by-value-and-pass-by-reference-in-c-for-1st-year-it-student-1fjc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)