메모장
C언어 복습4 (숫자 비밀번호 검사) 본문
참고: 정덕 - <컴맹을 위한 C언어>
♨ 개인적 해석이 다분한 글임으로, 인지하지 못한 오류가 있을 수 있습니다 ♨
▣ 함수의 역할(main, pritf, scanf 등)
예) printf 함수
- 1. 데이터를 받는다 (출력형식과 출력할 데이터를 받는다)
- 2. 자신이 해야할 일을 수행한다 (형식에 맞추어 데이터를 출력한다- 정수형, 실수형, 글자 등)
- 3. 데이터를 반환한다 (출력한 글자의 개수)
▣ 함수 정의하기(새로 만들기)
1.함수는 함수 안에서 정의하면 안된다
-> main함수도 함수이기 때문에 main의 중괄호(" { , } ")안에서 함수 정의 불가
2. 함수 내에서 함수 호출은 가능
예) 함수 정의 시
①int ②add③(int a, int b)④{ return a+b; }
① int : 변환할 데이터의 자료형
② add : 함수 이름
③ int a, int b : 매개변수 선언 ( ※매개변수(Parameter/이하 파라미터): 함수에 들어가는 값 )
④ return / a+b : 변환 명령 및 반환값
=> add()라는 함수는 정수형 함수이며,
소괄호 " ( , ) " 안에 들어오는 2개의 정수를 합하라는 의미
함수 호출
int value = add(10,20);
add : 함수 이름
10, 20 : 파라미터a, 파라미터b
=>value라는 변수를 선언할 때, add 함수를 사용한다
(value에 10과 20의 합친 값을 부여한다)
※ 정의할 때의 형식에 맞추어 사용해야 한다.
예) 함수 정의 할 떄 매개변수를 2개 사용했다면, 사용할 떄에도 2개를 넣어줘야 한다.
3. 파라미터가 없는 함수를 만들고 싶다면 파라미터 선언 부분을 비우거나 / void를 적는다
예) int kkk(void){ }
int vvv( ){ }
4. 반환값이 없는 함수를 만들 경우 반환자료형 부분에 void를 넣는다(비워두면 자동적으로 컴파일러가 int로 컴파일)
예) void kkk(int value){ }
5. return문은 값을 반환할 때 사용, 값을 반환 = 함수의 종료 -> return문 뒤에 작성한 코드는 실행X
6. 함수 선언만 미리 해놓고, 함수 정의는 main함수 이후에 해도 된다
※ 컴파일러는 위에서부터 차례대로 컴파일하기 때문에 선언을 하지 않고 main하단에 정의만 만들어 놓는다면
main 이전에 해당 함수가 정의되지 않았기 때문에 에러가 발생한다
▣ 함수 선언 : 중괄호( " { , } ") 를 제외하고 적는다(함수의 프로토타입, 원형)
- 위 예시에는 "numPlusnum" 이라는 int형(int를 반환하는) 함수를 정의 및 사용할테니
대기하라고 컴파일러에게 알려주는 것
∴ ① main 이전에 함수를 정의하거나
② main이전에 함수를 선언한 후 main 이후에 함수를 정의한다
▣ 지역 변수와 전역 변수
- 함수 정의 때 사용하였던 변수를 아무런 선언 없이 main이나 다른 함수에서 사용 불가
-> 함수 정의에서 사용된 변수는 정의 종료(함수 종료) 후 사용불가 상태가 된다
= 함수 정의 시 차지되었던 메모리가 해체되어 메모리에 남아있지 않는다
- 특정 함수에서만 사용할 수 있는 변수 = 지역 변수
↕
- 함수 밖에서 선언되어, 어디서든지 사용 가능한 변수 = 전역 변수
-> 프로그램 시작 ~ 종료시 까지 메모리 차지
※ 지역변수와 전역변수가 동시에 선언되었다면, 지역변수가 참조된다
(동일한 이름의 변수에서의 우선 순위: 지역변수 > 전역변수)
-> 그렇지만 웬만해선 동일한 이름의 변수를 선언하지 않는게 좋다
문제: 숫자 비밀번호 검사하기
1. 사용자로부터 정수(int)를 입력받는다
2. 입력받은 값이 비밀번호와 동일한지 확인
3. 같으면 환영(Wellcome), 다르면 잘 가(Bye) 출력
4. 1번은 main에서, 2,3번은 외부함수를 활용
정답>


'C언어 복습' 카테고리의 다른 글
C언어 복습 6 (오늘 날짜 표시) (0) | 2019.05.25 |
---|---|
C언어 복습 5 (연산자 우선순위 / 표로 대체) (0) | 2019.05.25 |
C언어 복습3 (BMI 계산기) (0) | 2019.05.12 |
C언어 복습 2 (입력받은 수로 카운트 다운) (0) | 2019.05.04 |
C언어 복습 (시작하기) (0) | 2019.04.22 |