-
[C,C++] C에서 함수의 데이터 전달 방법(Call-by-Value, Call-by-Reference)ETC/[C, C++] 2022. 4. 25. 00:24반응형
값을 전달하는 법(Call-by-Value)
ex) 매개변수의 값을 증가시키는 함수
1. 증가할 값의 복사본을 매개변수로 넘겨주고
2. 함수에서 새로운 주소에 있는 변수에 그 값을 입혀서 연산을 진행한 다음
3. 반환 값이 있을 시 그 증가된 값을 기존 변수에 저장.
기본적으로 함수를 호출할 때 데이터를 전달하는 방법은 값의 복사본을 주고 사용하고 다시 받아오는 방법이다.
주소를 전달하는 법(Call-by-Reference)
void adding(int *pa){ *p+=5; } int main(){ int a=0; adding(&a); printf("%d\n",a);/5 }
이것도 사실 참조자가 아니라 주소를 가지고 넘기는 것이기 때문에 Call-by_Reference라 보기 어렵고 이것 또한 Call-by-Value로 보는 것이 맞다.주소를 반환하는 법
지역변수의 값을 반환하면 쓰레기값이 나올 수 있기 때문에 정적 지역변수나 동적 할당 주소를 대상으로만 반환하자.
int * adding(int a, int b){ static int res; res=a+b; return &res; } int main(){ int a=10, b=5; int *sump; sump=adding(a,b); printf("%d\n",*sump); return 0; }
반응형'ETC > [C, C++]' 카테고리의 다른 글
[C,C++] 포인터 배열 (0) 2022.04.30 [C,C++] 변수의 종류(지역, 전역, 정적 ,레지스터) (0) 2022.04.24 [C,C++] 문자열 함수(strcpy, strncpy, strlen, strcat, strncat, strcmp, strncmp) (0) 2022.04.22 [C,C++] 문자열과 포인터 (0) 2022.04.22 Hello World! (0) 2022.04.22