기초 cs - 함수 7(반환값)

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

CS기초 시리즈

목록 보기
26/71

반환값에 expression (식) 을 사용할 수 있음

return x*x;
return 1+2+3;
...

소문자를 대문자로 바꾸는 것

char ConvertToUpper(char input)
{
	if (input >= 'a' && input <= 'z')
	{
		//소문자는 바꾼 것을 돌려줌
		return input - 'a'+'A'; 
        // 'a'-'a' = 0 +'A'(대문자만큼 떨어지게함)
        // 리턴값은 항상 마지막 줄에 있을 필요가 없다
	}
	else
	{
		return input; // 그대로 돌려줌
	}
}
 

int main()
{
	char input[]{ "Hello" };
	for (int i = 0; i < 6; i++)
	{
		std::cout << ConvertToUpper(input[i]);

	}
	std::cout << std::endl;
	
}

반환값은 하나 이상 있을 수 있음
항상 함수의 마지막줄에 위치할 필요는 없음

반환값 후 즉시 함수가 종료되고 제어권이 caller로 넘어감

함수의 흐름 : main에 input이라는 문자열 배열 6글자 생성됨 > int i에 0부터 시작해 H가 conver함수로 넘어감 > char타입의 input에 H 글자가 들어옴 if조건 충족되지 않아 else > return을 만나면 함수가 즉시 input을 돌려주며 종료됨 > conver함수가 H로 치환되며 화면에 출력 > 다시 int i에 1이 들어가며 e가 conver로 전달>if 조건에 충족되고 return을 만나서 대문자로 바껴서 돌아감 > conver가 대문자 E로 치환됨 > 반복

함수의 call stack


디버그 모드를 사용하면 어떻게 이동하는지 알려줌

디버그 기능을 자주 사용해보고 친해보자

F9 : 중단점 걸기 / 해제
F10 : 한줄 실행 (함수를 만나면 한번에 싹 처리함)
F11 : 함수 안으로 들어가기까지 함
F5 : 실행 (디버그 모드로 실행)


Data Structure(자료구조) : stack 과 queue

Stack : 쌓는다
	쌓아 올리면 가장 마지막에 올린 것 먼저 꺼내야함(최근에 쌓은 것만)
    LIFO : lasf in,first out(후입선출)
    가장 마지막에 들어온 것이 먼저 나간다
    함수의 호출 스택(call stack)으로 지역변수도 관리
    local 변수는 stack memory에 저장됨(함수의 호출 스택과 관련되있으므로)
    global extern static 변수들은 Data라는 영역에 저장됨
    
    stack overflow!!!! error
    조엘 온 소프트웨어 책 읽어보기

Queue : 줄서기
	먼저들어온 사람이 먼저 나간다
    FIFO: first in first out(선입선출)
    로그인 대기열을 생각해보자
	최대로 들어갈 수 있는 자료가 정해져있기 때문(넘어가면 서버 효율성이 안좋음)
    priority queue (접속 대기자에 우선순위를 부여 - 게임에서 사용하기도함)
void f()
{
	f();
}

int main()
{
	f();
}
오류 : stack overflow (main에서 시작해 f를 계속 쌓아올리다가 한계를 넘어섬)
profile
공부 기록용

0개의 댓글