Parameter 매개변수와 Argument 인자

매개변수와 인자의 용어차이

매개변수는 함수의 기능을 바꾸어주는 기능을 한다.
매개변수는 함수가 끝나는 동시에 메모리에 반납이 된다.
즉, 새로운 변수가 생성되어 데이터가 복사되는 것이다.

인자는 함수를 사용할때 들어가는 변수,리터럴을 말한다.

#include <iostream>

using namespace std;

int foo(int a, int b);

//함수에서 사용되는 변수가 매개변수 parameter이다.
int foo(int a, int b) {
	cout << "a : " << a << " b : " << b << endl;
	return a + b;
}

int main()
{
	int a = 3, b = 4;

	//함수를 불러올때 사용되는 변수가 인자 argument이다.
	foo(6, 7);
	foo(a, b);

	return 0;
}

 

 

값에 의한 인수 전달
Call by value

함수는 파라미터가 어떤게 들어오는지에따라 결과가 달라진다.
함수를 사용할때 선언된 변수를 인수에 넣게되면 변수를 함수로 보내는게 
아닌 변수주소안의 데이터를 복사해서 보낸다.

그러므로 인자안에서 사칙연산이 가능한 것이다.

Call by value는 함수안에서 생긴결과가 밖으로 영향주지 못한다.

#include <iostream>

using namespace std;

void doSomething(int y) {
	cout << "In fuc " << y << " " << &y << endl;
}

int main()
{
	//리터럴 7이 함수에 복사한다.
	doSomething(7);

	int y = 6;
    //doSomething(y);안의 변수 주소와 다른걸 볼 수 있다.
	cout << "In main " << y << " " << &y << endl;
	doSomething(y);
	doSomething(y+1);

	return 0;
}

함수 function
- 반복되는 작업을 분리하여 함수로 생성한다.
리턴값 return values
- 함수에서 반환하는 결과값을 말한다.
매개변수 parameters
- 함수가 사용될때 생성되는 변수를 말한다.
인수 aguments
- 함수를 불러올때 사용할 인수를 말한다.

 

#include <iostream>

using namespace std;


//함수도 메모리에 저장되어 있다.
//integer형태로 반환한다.
//int a,int b는 parameters 매개변수 이다.
int addTwoNumbers(int a, int b)
{
	int sum = a + b;
	cout << sum << endl;

	//반환값
	return sum;
}

//return 값이 없을때 void를 사용한다.
void printHello() 
{
	cout << "Hello" << endl;
}

int main()
{
	//반복적인 작업에 같은코드를 계속생성하는건 비생산적이다.
	//한가지패턴이 여러번 나타나면 함수로 분리한다.
	cout << 1 + 3 << endl;
	cout << 4 + 5 << endl;
	cout << 8 + 7 << endl;

	//함수를 만들면 아래처럼 쉽게 사용할 수 있다.
	//한 자리 더하기에 사용하면 불필요해보지만 복잡한 사용은 무조건 쪼개서 사용한다.
	//메모리에 저장된 함수를 불러와 사용한다.
	//함수를 호출할때 (1,3) 넣어주는값을 aguments 인수라고 한다.
	//함수실행될때 파라미터에 인수를 초기화한다.
	addTwoNumbers(1, 3);
	addTwoNumbers(4, 5);
	addTwoNumbers(8, 7);

	//함수가 integer형이기에 int로 값을 저장할 수 있다.
	int a = addTwoNumbers(4, 5);
	cout << "a 변수의 값은? " << a << endl;

	printHello();

	return 0;
}

'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글

c++ 헤더파일 만드는 이유  (0) 2019.06.26
c++ 키워드,식별자란?  (0) 2019.06.26
c++ 입력,출력  (0) 2019.06.25
c++ 객체,변수,초기화,대입이란?  (0) 2019.06.25
C언어 파일입출력  (0) 2019.01.18

프로그램 메모리 주소

- 컴퓨터에서 프로그램이 실행되기 위해서는 프로그램이 메모리에 적재되어야한다.

- 당연히 프로그램의 크기를 충당할 수 있을 만큼의 메모리 공간이 있어야한다.


- 일반적인 컴퓨터의 운영체제는 메모리 공간을 네 가지로 구분하여 관리한다.

+ 코드영역 - 소스코드

+ 데이터영역 - 전역변수,정적변수

+ 힙영역 - 동적할당변수

+ 스택영역 - 지역변수,매개변수


전역변수

- 전역변수(Global Variable)란 프로그램의 어디서든 접근 가능한 변수를 말한다.

- main함수가 실행되기도 전에 프로그램의 시작과 동시에 메모리에 할당된다.

- 프로그램의 크기가 커질 수록 전역 변수로 인해 프로그램이 복잡해질 수 있다.

- 메모리의 데이터영역에 저장된다.

실습내용

실습결과



지역변수

- 프로그램의 특정한 블록에서만 접근가능하다.

- 함수가 실행될때마다 메모리에 할당되어 함수가 종료되면 메모리에서 해제된다.

- 메모리의 스택(Stack)영역에 기록된다.

실습내용

실습결과



정적변수

- 정적변수(Static Variable)는 특정한 블록에서만 접근할 수 있는 변수이다.

- 프로그램이 실행될 때 메모리에 할당되어 프로그램이 종료되면 메모리에서 해제된다.

- 메모리의 데이터 영역에 적재된다.

실습내용

실습결과



레지스터변수

- 레지스터변수(RegisterVariable)은 메인 메모리 대신 CPU의 레지스터를 사용하는 변수이다.

- 레지스터는 매우 한정되어 있으므로 실제로 레지스터에서 처리될 지는 장담할 수 없다.

실습내용

실습결과



함수의 매개변수가 처리될 때

- 함수를 호출할 때 함수에 필요한 데이터를 매개변수로 전달한다.

- 전달 방식은 1: 값에 의한 전달 방식, 2 : 참조에 의한 전달 방식이 있다.

- 값에 의한 전달 방식은 단지 값을 전달하므로 함수 내에서 변수가 새롭게 생성된다.

+ 지역변수에 가깝다.

- 참조에 의한 전달 방식은 주소를 전달하므로 원래의 변수 자체에 접근할 수 있다.

+ 전역변수에 가깝다.

+ 매개변수로 포인터 변수를 보내는것이다.


실습내용

실습결과


+ Recent posts