시나공 IT

통합검색

묻고 답하기

제목 사용자 정의 함수에서 변수 선언하는 내용 잘 이해가 안 가요
자격증 정보처리 기사 실기
도서/쪽 페이지 2019 시나공 정보처리기사 실기(산업기사포함) / 88쪽
등록일 2019-05-16 조회 26
작성자 권*자

안녕하세요

 

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


아래는 예제 문제입니다.

 


#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

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

 

[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]

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

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

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

 

행복한 하루되세요 :)

첨부파일
  • 첨부파일 없음