몽상실현개발주의

[따배씨] 9.1 함수가 필요할 때 ~ 9.2 함수의 프로토 타입 본문

Language/C

[따배씨] 9.1 함수가 필요할 때 ~ 9.2 함수의 프로토 타입

migrationArc 2021. 5. 27. 23:41

[따배씨] 9.1 함수가 필요할 때 ~ 9.2 함수의 프로토 타입

따배씨 - 따라하며 배우는 C언어

9강 함수

9.1 함수가 필요할 때

#include <stdio.h>

int main(){
    printf("********************\n");
    printf("        LEE\n");
    printf("    Seoul, Korea\n");
    printf("********************\n");
  
  	return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

#define WIDTH 20
#define NAME "LEE"
#define ADDRESS "Seoul, Korea"

void print_multiple_chars(char c, int n_stars, bool print_newline);
void print_centered_string(char str[]);

int main(){
    print_multiple_chars('*', WIDTH, true);
    print_centered_string(NAME);
    print_centered_string(ADDRESS);
    print_multiple_chars('*', WIDTH, true);
    
    return 0;
}

void print_multiple_chars(char c, int n, bool print_newline){
    for (int i = 0; i < n; ++i){
        printf("%c", c);
    }
    
    if (endl)
        printf("\n");
}

void print_centered_string(char str[])
{
    int n_blanks = 0;
    n_blanks = (int)(WIDTH - strlen(str)) / 2;
    print_multiple_chars(' ', n_blanks, false);
    printf("%s\n", str);
}
  • 하드타이핑 출력을 함수를 활용하여 출력

 

 

9.2 함수의 프로토 타입

  • 모든 함수의 내부동작을 외울수 없음
    • 블랙박스로서의 함수, 입력과 출력만 생각하고 전체 구조를 작성
  • 컴퓨터가 Compile 을 할 때, 블랙박스로서 동작만 알면 됨
    • prototype 형태만 있으면 Compile이 진행 됨
    • Compile 만 진행되고, 실행파일을 만드는 Linking은 진행되지 않음
      • Linking 단계에서 함수의 실행 내용이 없기 때문

 

void print_multiple_chars(char c, int n_stars, bool print_newline);
  • 함수의 prototype 선언
  • void: 함수의 실행 결과 값의 자료형
  • print_multiple_chars: 함수 명
  • (char c, int n_stars, bool print_newline) : 매개변수, Parameter

 

print_multiple_chars('*', WIDTH, true);
  • 함수 호출
  • ('*', WIDTH, true): argument, 함수의 입력값

 

void print_multiple_chars(char c, int n, bool print_newline){
    for (int i = 0; i < n; ++i)
        printf("%c", c);
    
    if (endl)
        printf("\n");
}
  • 함수의 선언문
  • 함수의 형이 void 이기 때문에, return 이 생략

 

void print_multiple_chars(char, int, bool);

...

int main(){
  ...
}

void print_multiple_chars(char c, int n, bool print_newline){
  for (int i = 0; i < n; ++i)
    printf("%c", c);
  
  if (endl)
    printf("\n");
}
  • prototype 선언에서는 매개변수 형 까지만 입력하고 함수 선언부에서 매개변수 명까지 입력해도 complie이 된다
    • 블랙박스 모델에서 프로토타입 선언은 데이터 타입의 입력/출력만 중요하기 때문
    • 그래도 작성하는것이 좋다

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments