Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

메모장

C언어 복습4 (숫자 비밀번호 검사) 본문

C언어 복습

C언어 복습4 (숫자 비밀번호 검사)

Captic 2019. 5. 19. 16:18

참고: 정덕 - <컴맹을 위한 C언어>

♨ 개인적 해석이 다분한 글임으로, 인지하지 못한 오류가 있을 수 있습니다 

 

▣ 함수의 역할(main, pritf, scanf 등)
 예) printf 함수
   - 1. 데이터를 받는다 (출력형식과 출력할 데이터를 받는다)
   - 2. 자신이 해야할 일을 수행한다 (형식에 맞추어 데이터를 출력한다- 정수형, 실수형, 글자 등)
   - 3. 데이터를 반환한다 (출력한 글자의 개수)

 

h,e,l,l,o,w,o,r,l,d,\n 총 11개의 글자

▣ 함수 정의하기(새로 만들기)
  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'이라는 함수를 선언만 한 후 main 하단에 해당 함수의 정의를 만들었기에 Err

 

▣ 함수 선언 : 중괄호( " { , } ") 를 제외하고 적는다(함수의 프로토타입, 원형)

   - 위 예시에는 "numPlusnum" 이라는 int형(int를 반환하는) 함수를 정의 및 사용할테니

     대기하라고 컴파일러에게 알려주는 것

 

 ∴  main 이전에 함수를 정의하거나

    ② main이전에 함수를 선언한 후 main 이후에 함수를 정의한다 

 

▣ 지역 변수와 전역 변수

 - 함수 정의 때 사용하였던 변수를 아무런 선언 없이 main이나 다른 함수에서 사용 불가

   -> 함수 정의에서 사용된 변수는 정의 종료(함수 종료) 후 사용불가 상태가 된다

       = 함수 정의 시 차지되었던 메모리가 해체되어 메모리에 남아있지 않는다

   

 - 특정 함수에서만 사용할 수 있는 변수 = 지역 변수

                   ↕

 - 함수 밖에서 선언되어, 어디서든지 사용 가능한 변수 = 전역 변수

   -> 프로그램 시작 ~ 종료시 까지 메모리 차지

 

※ 지역변수와 전역변수가 동시에 선언되었다면, 지역변수가 참조된다

   (동일한 이름의 변수에서의 우선 순위: 지역변수 > 전역변수)

   -> 그렇지만 웬만해선 동일한 이름의 변수를 선언하지 않는게 좋다

 

 

문제: 숫자 비밀번호 검사하기 
 1. 사용자로부터 정수(int)를 입력받는다 
 2. 입력받은 값이 비밀번호와 동일한지 확인 
 3. 같으면 환영(Wellcome), 다르면 잘 가(Bye) 출력

 4. 1번은 main에서, 2,3번은 외부함수를 활용

 

정답>

더보기

 

정답(9999) 입력시 welcome 출력, 오답(0000) 입력시 Bye 출력