컴퓨터/C
어떠한 업종이던 표준과 용어는 아주 중요합니다. 역사적인 천재가 아닌 이상 대부분이 이미 만들어진 개념들을 응용 또는 사용하기 때문입니다. 혼자만의 일이 아닌 공통된 사람들과 지식을 공유하고 정보를 나누려면 표준과 용어들을 알아둘 필요가 있습니다.
C언어뿐 아니라 다양한 프로그래밍 언어에서 함수를 호출하는 방식을 크게 두 가지로 분류를 합니다.
용어가 다소 생수 할 수 있는데 이 함수를 호출할 때 쓰이는 이 용어는 이미 우리가 알고 있고 사용하고 있는 개념입니다.
C언어에서 함수를 호출에 매개변수를 넣어 호출을 하면 호출된 함수의 스택 영역에 매개변수로 한 새로운 지역변수가 생깁니다.
즉 함수를 호출할 때 사용된 변수의 값은 변화되지 않은 새로운 변수가 호출된 함수 영역에서 생기는 것입니다.
다음과 같은 경우를 예를 들어 볼 수 있습니다.
#include<stdio.h>
void func(int count)
{
count = 1000;
printf("함수 안에서의 지역변수 count의 값 : %d\n",count);
}
int main()
{
int count = 10;
func(count);
printf("함수가 실행된 후 main의 지역변수 count의 값 : %d\n",count);
return 0;
}
위의 소스코드처럼 일반적인 변수의 형태를 매개변수로 하여 호출을 하면 매개변수들은 값을 복사하는 형태로 함수 단위의 프로그램을 수행하게 됩니다. 이를 Call by value라고 부르며 특징은 아래와 같습니다.
이 방식의 함수 호출의 대표적인 예는 바로 포인터를 사용했을 때입니다. 포인터는 메모리의 주소를 저장하여 그 저장된 주소 안의 데이터를 제어합니다. 이를 이용하는 방식을 Call by reference라고 합니다.
#include<stdio.h>
void func(int* count)
{
*count = 1000;
printf("함수 종료 전 count 값 : %d\n",*count);
}
int main()
{
int count = 10;
func(&count);
printf("함수가 실행된 후 main의 지역변수 count의 값 : %d\n", count);
return 0;
}
위의 소스코드처럼 포인터 변수를 이용해서 지역변수의 주소를 매개변수로 인자로 호출을 한다면 함수에는 포인터 매개변수로 main의 count 변수의 주소를 받아오게 됩니다. 이런 식의 제어를 우리는 Call byreference라고 하며 특징은 다음과 같습니다.
이미 이 기능들과 개념들은 다 익혔을 것이라 생각하지만, 사회에서 정보와 지식을 공유하기 위해서는 알아두시면 좋을 것 같습니다.
C 언어 - 실습 - 학생관리 프로그램Ver3(system함수사용하기) (0) | 2021.07.16 |
---|---|
C 언어 - 콘솔창 제어해보기 system함수 (0) | 2021.07.15 |
C 언어 - 실습 - 학생관리 프로그램Ver2(함수화) (0) | 2021.07.13 |
C 언어 - 디버깅해보기 (0) | 2021.07.12 |
C 언어 - 실습 - 학생관리 프로그램Ver1(기초 지식 이용) (0) | 2021.07.11 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet