기초cs- 함수(function)

킴스코딩클럽·2022년 9월 28일
1

CS기초 시리즈

목록 보기
20/71

구성요소
반환(return)
이름(name)
매개변수목록(parameter list) 입력이 여러개일수있음
본체(body) 수행할 연산 집합= 문장 여러 개 본체


반환타입 함수이름( [매개변수목록] )
{
문장1
문장2
문장3
...
[return 계산값-반환되는 값의 타입] ;
}
[이 괄호]의 뜻은 생략가능하다는 뜻


반환 타입

int,float,bool,char,,,+ void(되돌려주는값이없을 때)

함수 이름

변수의 이름 규칙 그대로 적용(특수기호 및 숫자시작불가, 대소문자 구분)
파스칼 표기법 : 모든 단어의 시작이 대문자 MyFunction()

매개변수

매개 변수 목록 : 함수 내부에서 사용할 변수의 선언
0개 : 안써도 됨
1개 : 타입 + 변수명
int x
2개 : 타입 변수명, 타입 변수명
int x , int y

계산식

일련의 프로그램 실해 흐름의 묶음
return : 함수의 실행을 멈추고 일을 시킨 쪽으로 되돌아 감
void 타입의 함수라면 return은(반환값은) 없다
다른 타입이라면 (int 타입의 함수라면 return 10-integer;)


함수 연습해보기

void PrintLine ()
{
	//출력 x,입력x 여기서 말하는 출력은 계산결과가 없다는 뜻이다
	//다른말로 반환이 없고 , 매개변수가 없는 함수
	std::cout << "---------------------" << std::endl;
}


int main() 
{
	PrintLine(); // 함수를 호출-사용하는 것이다	
}
//프로그램 실행 순서 13라인 에서 4라인 쭉 실행되고 다시 13라인으로 되돌아와서 프로그램이 실행됨
//디버그 기능 사용하기 : F11을 사용하면 추적가능하다
void PrintNumber(int x)
{
	std::cout << x << std::endl;
	//반환값 x 매개변수 0 
}

int main() 
{
	PrintNumber(5); //결과 5 출력
}
함수를 호출하면 함수로 이동하는데 괄호 안 5()이 그대로
int x로 전달이 되서 함수의 매개변수로 들어가게 되는 것이다
void PrintNumber(int x) //PrintNumber에 존재하는 x -parameter 
{
	std::cout << x << std::endl;
	//반환값 x 매개변수 0 
}

int main() 
{
	int x{ 1 };  //main에 존재하는 x
	PrintNumber(x); -argument
}
// 메모리에 main: x(int타입의 1)
// x의 값인 1이 PrintNumber로 넘어가게서 PrintNumber의 x에 1이 대입되는 것
//r -value가 전달됨 : call by value(값에 의한 호출)

함수를 부르는 쪽 : 위에서는 main을 caller
불러지는 쪽 : callee
caller의 괄호안 x를 인자 : argument
callee의 괄호안 x를 매개변수 : parameter
하지만 실제적으로는 인자와 매개변수를 명확하게 구분하면서 쓰지는 않는다
argument는 그냥 값이고
parameter는 변수로 쓰이는 것


매개변수가 두개라면?

void PrintNumber2(int x,int y) // 매개변수가 2개이상인 경우
{	
	std::cout << x << "," << y << std::endl;
	//반환값 x 매개변수 0 
}

int main() 
{
	int x{ 1 };  //main에 존재하는 x
	PrintNumber2(x,5); 
}
// 메모리에 main: x(int타입의 1)
// x의 값인 1이 PrintNumber로 넘어가게서 PrintNumber의 x에 1이 대입되는 것
//r -value가 전달됨 : call by value(값에 의한 호출)

int GetLuckyNumber() //반환 타입이 int
{
	return 7; 
	// 반환0,매개변수는x 
	// return을 만나면 즉시 종료
}

void PrintNumber(int x)
{
	
}
int main() 
{
	int lucky{};
	lucky = GetLuckyNumber(); //lucky = 7과 같음
	GetLuckyNumber(); //caller쪽이 7로 치환되는 결과를 가져옴
	std::cout << GetLuckyNumber() << std::endl; // 결과 7
	PrintNumber(GetLuckyNumber()); 
	//컴파일러는 오른쪽에서 왼쪽으로 읽어서 가능
	//( ):함수호출 연산자
	//계산할 때 GetLuckyNumber()계산먼저 해서 치환되고 밖을 계산
}
int Square(int x)
{
	int result = x * x;
	return result;
	// return x*x; 동일함
}
int main() 
{
	std::cout << Square(7) << std::endl; // 7이 square로 이동후 49로반환
}

문제 : 어디서 출력될까?

void PrintNumber(int x)
{
	x = -1000;
	std:: cout << x << std::endl;
}
int main() 
{
	int x{ 1 };
	PrintNumber(x);
	std::cout << x << std::endl;
}

1이 출력되는 것은 main에서
-1000이 출력되는 것은 PrintNumber에서

profile
공부 기록용

0개의 댓글