안녕하세요, 어서 오세요
이번 강의에서는 인수와 변수에 대해 얘기해 볼게요.
이런 용어는 번갈아 쓰이는 경향이 있어요
그들이 다뤄야 하는 건 함수에 전달되는
데이터예요
네 매개 변수는 변수와 함수 선언 그리고
함수 정의 구현이죠
네 네 함수 선언과 함수 프로토타입 함수
정의의 차이점을 기억하세요
함수 선언은 메서드 서명을 조정해요
함수 헤더죠
함수 정의는 함수의 구현입니다
실제 코드요
이 두 가지 조건 배상 정의에서 그 차이를
이해하세요
하지만 매개 변수는 함수 선언과 정의입니다
헤더에 있어요
왜냐하면 두 개의 헤더가 선언의 정의에 포함되어 있기 때문이죠.
함수가 호출되면 테아검먼트는 함수 매개 변수에 넘기는
데이터예요
함수에 전달된 변수의 실제
값이죠
함수 매개 변수는 함수 헤더와 그 자리홀더 안에서
정의됩니다 함수가 호출될 때 지정돼야 할 인수에
대해서요
인수와 매개 변수의 차이를 이해하세요
매개 변수는 오작동 정의와 선언과 관련이 있어요
네 인수는 함수를 호출하는 곳이죠
함수를 호출하면 전달하는 데이터는
인수는 호출할 때 사용되죠
이게 내 함수와 관련된 인수라고 할 거예요
함수가 데이터를 수신할 때 매개
변수로 불리죠
함수를 위한 매개 변수는 데이터 타입과 매개 변수 이름의
목록이에요
각 변수마다 쉼표로 연결하세요
매개 변수 목록 전체가 괄호 안에 정렬됐어요 함수 이름을
따라서요
함수엔 노파라미터가 있어요 전달된
데이터가 없다는 뜻이죠
네 이 경우엔 왼쪽과 오른쪽 괄호 사이에 빈 공간이 있어요
공허함을 유지할 수 있어요 사이에 아무것도 없죠 하지만 공허함을
만드는 건 좋은 연습이에요
보이드는 특별한 키워드예요 매개 변수나 반환 데이터가
없다는 뜻이죠
매개 변수는 함수에 데이터를 전달하는 수단이죠
네 네 네, 호출하는 함수에서 수신 끝으로
부르기도 하고 받기도 하죠
함수의 매개 변수 이름이 로컬이에요
로컬 데이터에 관해 얘기할 거예요
하지만 함수 안에 매개 변수 이름이 onlyexist예요
대대로 전해진 이론의 가치를 받아들여요
add요 add라는 함수가 있다면 변수를 인수로
넘기고 값 5를 넘기고 x라는 매개 변수가 있는 함수를
갖는 거죠 x는 함수 본체 어디서든 5가 되겠죠
함수 본체는 이런 매개 변수를 구현할
때 사용하죠
그렇지 않다면 통과되지 않은 거죠
네 네 function declaration
정의에 정의된 매개 변수가 있는데 함수 안에서 그 변수를 사용하지 않는다면 낭비죠
포함시키지 마세요 그건 필요 없다는 뜻이니까요
사용하지 않는 어프랙션으로 데이터를 보내지 마세요
네 네 함수 본체에는 함수 구현에 의해 필요한 추가적인 로컬
변수들이 있을 수 있습니다
네 함수 본체에 다른 변수들이 선언되어 있을 수도 있습니다 여러분이
완료하는 작업이 무엇이든 변수가 필요하기 때문입니다
전송된 데이터만 조작하는 게 아니죠
함수 안에서 localdata를 작동할 수 있어요
네 함수에 배열을 인수로 넘길 땐 추가적인 인수도 넘겨야
합니다 배열의 크기를 명시하는 정의된 또 다른 매개 변수가 있어야
하죠 그래야만 해요
그 이유는 함수는 어레이에 몇 개의 요소가 있는지 알 방법이
없기 때문이죠
따라서 사이즈 50 아나레이를 지정했어도 30개
요소만 저장할 수 있죠
네 함수 내부에서 그 배열을 사용할 거라면 크기가
얼마나 큰지 알아야 할 겁니다 루프를 이용해 반복하거나
요소에 엑세스해야 할 테니까요
액세스 요소가 그걸 통해 반복되는 경우
경계를 벗어났는지 아닌지 알아야 해요
아웃 오브바운드가 왜 중요한지 말씀 드렸죠
예를 들어보죠
printf 함수가 호출되면 항상 하나 이상의
값을 인수로 제공하죠
첫 번째 값은 큰따옴표 안에 있어요
나머지 값들은 어떤 경우에도 보여질 수 있어요
네 이건 사실 인수의 변수 개수를 취하는 함수입니다
이건 초보자 클래스니까 얘기는 안 할게요 좀 더 고급
개념이거든요
하지만 printf 함수는 데이터를 전달하는
데 있어 좋은 예입니다 다수의 데이터 집합을 전달하니까요
디스플레이하고자 하는 따옴표 안의 문자열이나 변수요
그래서 토베가 함수에 데이터를 전달할 수 있는 게 중요해요
기능의 유용성과 유연성을 크게 향상시키죠
함수가 데이터를 수용할 수 있는 탈출성이 없다면 이렇게
유용하지 않겠죠
네 지난 강의에서 말씀드린 예제에서 출력을
보여주는 함수가 있었는데 별로 하는 게 없었죠
너무 정적이었어요
당신이 그걸 들먹일 때마다 똑같이 반응했어요
데이터를 취하는 기능이 있다면 어떻게 될까요? 표시된
걸 제어할 수 있다면요?
printf 함수처럼요
printf 함수가 매개 변수를 제거하지 않으면 뭘 디스플레이할지
말할 수 없을 거예요
네 데이터를 받아들이지 않는다면 이 변수를 디스플레이하라고 말할 수 없어요
이 문자열을 디스플레이할 수 있습니다
별 도움이 안 될 거예요
그래서 여러분은 패스data 함수를 훨씬 더 유용하고
유연하게 만들고 싶겠죠
곧 보시게 될 거예요
네 그러니까 곱셈 함수를 쓰면 같은 숫자 두 개를
곱하지 않아도 돼요
매개 변수를 입력하면 숫자 2개를 위한 데이터가 전달돼요
따라서 전송된 데이터에서 다양한 계산을 할 수 있죠
패싱이 왜 유용한지 이해하는 데 아주 중요해요
여러분의 함수 정의 앞에 addcomment를 붙이는
것도 좋은 생각이죠
오작동이 어떤 영향을 끼칠지 설명하고 주장이 어떻게 사용될지
설명하는 데 도움이 되죠
흔히 볼 수 있는 거죠
제 예제에서 보실 수 있어요
파일 상단에 함수 declarationat이 있어요
함수 정의도 있고요
함수 정의에는 함수 헤더가 포함되죠
함수헤더 바로 위에 주석이 있어요
보통 여러 줄 주석이죠
슬래시와 별표가 있죠
네 여기 함수의 이름과 함수의 목적도 나와 있어요 그
함수에 전달되는 데이터도 설명하고요
이건 유지 보수를 위한 장치로 오류를 찾아내서
더 빨리 고칠 수 있죠
보통 함수에 이름을 붙여서 뭔가를
알려주죠
댓글이 추가되면 더 많은 걸 알 수 있죠
네 네 여기 두 숫자를 곱하는 함수가 있어요 데이터를 전달하는
함수죠
2개의 숫자를 곱했어요
매개 변수를 가지고 있기 때문에 함수라는 것을 알 수 있죠
괄호가 있어요
괄호를 보면 오작동을 확인할 수 있어요
반환 형식이 있으니 식별할 수도 있어요
그게 기능이라는 건 여러 가지로 알 수 있어요
네 하지만 가장 중요한 건 괄호예요 그리고 또 괄호가 보이시죠
괄호는 블록의 시작과 끝을 나타내요
2배 함수네요
네 네 함수 매개 변수는 괄호 사이에서 정의되고 쉼표로 분리된다는
걸 기억하세요
두 가지 조건이 있어요
x라는 매개변수가 있고 y라는 매개변수가 있어요
각 매개 변수마다 들어오는 데이터 형식을
식별해야 해요
여기에 int가 2개 있네요.
이게 토패스 데이터의 표준 방식이에요
괄호 사이에서 datatype을 하고 변수의 이름을 정하세요
변수 이름이요 변수 이름이요 변수 이름 C로 유효한
건 뭐든 x라고 할 수 있죠 y Z 원하는 대로요
달러 기호로는 시작할 수 없어요
네 그리고 쉼표로 구분해요 이 관습에 익숙해지세요 괄호
안에 매개 변수가 있습니다
네 네 매개 변수가 없고 함수로 전달된 데이터가
없다면 괄호 사이에 보이는 건 공허하거나 괄호 사이에 아무것도
안 보이겠죠
이 함수요 이 함수요 전달된 데이터를 가지고
올 것입니다 x와 y로 명명된 두 개의 변수입니다 그것들을 함께 곱해서 결과라는
변수에 저장할 것입니다 이 경우에는 철자를 잘못 쓴
것 같네요
그리고 데이터를 출력하죠
복사된 데이터를 출력하죠
하지만 이 기능의 유연성과 유용성을 보세요 데이터를
수집하니까요
넘기는 것에 따라 다양한 데이터를 표시할 수 있어요
네 메인 루틴에서 함수를 호출할 때 2개의 숫자를
곱하고 인수를 넘겨요
10과 20을 넘겨요
varablenames도 전달할 수 있어요
하지만 이 예제에선 그냥 10과 20이라고 하죠
네 네 이건 2개의 숫자를 곱하는 함수를 호출하고
첫 번째 매개 변수인 데이터 10을 전달할 겁니다 2루에 20달러
x는 10을 나타내고 y는 20을 나타내죠
네 곱셈 x 곱하기 y를 하면 10 곱하기 20이 되죠 결과는
200을 저장하고 그 결과를
디스플레이할 거예요 전달되는 변수들과 함께요 x y, Z로요
디스플레이 1020 다음에 200이 나오죠
또한 이 함수를 재사용할 수 있다는 걸 주목하세요
네 네 다른 데이터로 호출할게요 메인 함수 두 번째 줄에 데이터
값이 20, 30이죠
그런 다음 다시 50 곱하기 2를 해요
네 아주 유용하죠 다양한 데이터를 재사용할
수 있고 유연하게 만드는 함수를 만들 수 있으니까요
구문은 따라 하기가 아주 쉬워요
괄호 안에 있는 두 변수를 쉼표로 나눈 거예요
그리고 이본지어라고 부르려면 이름 하나를 띄우기만
하면 두 개의 데이터가 나오죠
어떤 데이터든 비커먼 측 괄호에서 세미콜론으로
끝나죠
어떤 종류의 데이터 타입도 함수에 전달할 수 있어요
배열을 통과할 수 있어요
또한 다른 데이터 타입을 전달하는 방법에 대해서도 알아보죠
네 여기 간단한 예가 있지만 포인터를 전달할 수도 있어요 그건 아직
얘기 안 했죠
건물로 통과할 수 있어요
이 부분도 언급을 안 했군요
하지만 여기 데이터를 넘기면 정말 의미 있고 유용해져요
이건 간단한 예시예요
네 네 구문을 보세요 이걸 연구하면 여러 가지 다양한 기능을
작성하는 데 좋은 도전이 될 겁니다
고마워요