책 내용 질문하기
사용자 정의 함수에서 변수 선언하는 내용 잘 이해가 안 가요
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
88
조회수
159
작성일
2019-05-16
작성자
탈퇴*원
첨부파일

안녕하세요

 

이번에 시나공 교재로 기사실기시험 준비 중인데 사용자정의함수 부분에서 좀 의아한게 있어서 질문 올려봅니다.


아래는 예제 문제입니다.

 


#include <stdio.h>

void func(int i,int j); //A


main()

{

int a=3, b=12;

func(a,b);

printf("%d, %d\n", a, b);

}

void func(i, j) //B


int i,j; //C

{

i*=3;

j/=3;

printf("%d, %d\n", i, j);

}

 

 


1.

주석 A에서 void func(int i, int j); 와 같이 인자값 받는 위치에다가 선언했는데 B 처럼 사용이 가능한 건가요?

 

int i, int j;

void func(i,j);

뭔가 이런 형태여야 하지 않을까 생각이 들어서요


2.

그리고

B를 보면 void func(i,j) 이렇게 적었는데 ; 가 들어가야 하지 않나 해서요

오타인가 하고 교재의 다음 문제들도 확인했는데 다 아래쪽 함수에는 ; 제외하고 사용을 했더라구요

A와 B는 무슨 차이가 있는 걸까요? 


3.

마지막 질문은 주석 C 부분인데요

교재에 설명된 내용을 보면 인수로 받은 i와 j가 정수형 변수임을 꼭 선언해야 한다고 나와있는데 

왜 선언하는 위치가 함수보다 아래에 위치한 건지 잘...이해가 안가서요


설명 좀 부탁드립니다



감사합니다.​ 

 

 

 

답변
2019-05-21 14:20:05

안녕하세요 길벗수험서 운영팀입니다.

 

[1]

먼저 말씀하신 형태대로는 불가능합니다.

사용자정의함수의 선언 방식은 아래의 두 가지 방식으로 가능합니다.

 

첫 번째 

void func(i, j) int i, j;

또는

void func(i, j)

int i, j; 

 

두 번째

void func(int i, int j);

 

첫 번째의 방식에 줄을 나눈 방식에서는 void func(i,j) 뒤에 세미콜론;이 붙지 않음을 주의하세요.

하나의 구문을 두 줄로 나눈 것 뿐입니다.

 

 

[2]

위에서 설명드렸듯이 단순히 사용방식의 차이일 뿐입니다.

자료형을 괄호 안에서 선언하느냐, 또는 밖에서 선언하느냐의 차이이죠.

자료형이 선언되지 않은 변수를 사용하는 것은 오류를 불러일으킬 수 있으므로, 세미콜론으로 구분하지 않고 하나의 구문 내에서 모두 선언해주어야 합니다.

 

 

[3]

이 또한 위에서 설명되어진 것 같네요.

말씀하신대로 이미 사용된 변수를 뒤에서 다시 자료형을 선언하는 방식은 존재할 수 없습니다.

때문에 세미콜론이 하나만 사용되는 하나의 구문내에 자료형 선언까지 모두 포함시켜 줌으로써 실제 컴파일될 때는 자동으로 선언이 먼저 수행되게 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-05-21 14:20:05

    안녕하세요 길벗수험서 운영팀입니다.

     

    [1]

    먼저 말씀하신 형태대로는 불가능합니다.

    사용자정의함수의 선언 방식은 아래의 두 가지 방식으로 가능합니다.

     

    첫 번째 

    void func(i, j) int i, j;

    또는

    void func(i, j)

    int i, j; 

     

    두 번째

    void func(int i, int j);

     

    첫 번째의 방식에 줄을 나눈 방식에서는 void func(i,j) 뒤에 세미콜론;이 붙지 않음을 주의하세요.

    하나의 구문을 두 줄로 나눈 것 뿐입니다.

     

     

    [2]

    위에서 설명드렸듯이 단순히 사용방식의 차이일 뿐입니다.

    자료형을 괄호 안에서 선언하느냐, 또는 밖에서 선언하느냐의 차이이죠.

    자료형이 선언되지 않은 변수를 사용하는 것은 오류를 불러일으킬 수 있으므로, 세미콜론으로 구분하지 않고 하나의 구문 내에서 모두 선언해주어야 합니다.

     

     

    [3]

    이 또한 위에서 설명되어진 것 같네요.

    말씀하신대로 이미 사용된 변수를 뒤에서 다시 자료형을 선언하는 방식은 존재할 수 없습니다.

    때문에 세미콜론이 하나만 사용되는 하나의 구문내에 자료형 선언까지 모두 포함시켜 줌으로써 실제 컴파일될 때는 자동으로 선언이 먼저 수행되게 됩니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.