프로그래밍

 3198, 1/160 회원가입  로그인  
   물먹자
   c언어 질문좀요

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2830 [복사]


/* func_add.c */
#include <stdio.h>

int Add(int a,int b);
int Input(void);
void Result_Print(int val);
void Intro(void);

int main(void)
{
        int a,b;
        int output;

        Intro();
        a=Input();
        b=Input();

        output=Add(a,b);
        Result_Print(output);

        return 0;
}

int Add(int i,int j)
{
        int result=i+j;
        return result;
}
int Input(void)
{
        int input;
    scanf("%d",&input);
        return input;
}
void Result_Print(int val)
{
        printf("덧셈에 대한 결과:%d \n",val);
        printf("END \n");
}
void Intro(void)
{
        printf("start \n");
        printf("두 개의 정수 입력:");
}

여기서  a=input();  ,b=input(); 이건데

int Input(void)
{
        int input;
    scanf("%d",&input);
        return input;
}

이뜻이  Input이라는 함수에 input이라는 변수를 주고 입력한값을 input에 저장해서 int형태로 출력하라라는 뜻이라고 생각하는데 a=input();  ,b=input(); 이거를 그냥 a나b에 대입안하고  input(); 이라고만해놓으면 실행은되는데 오류가뜨더라구요
왜그런거죠?? 제생각엔 입력한값이 Input함수에잇는 input이라는 변수에저장되고 a=input();  ,b=input(); 이거처럼 a나 b에 대입하라는 소리가없으니깐 그냥 쓰레기값처럼 될꺼같은데 아닌가요?? 왜그런지좀 설명부탁드립니다

  Hit : 4843     Date : 2011/01/02 08:45



    
코털뽑기 음 값을 입력해서 input에 넣었으나

변수 input은 함수 Input()안의 지역변수이므로

함수가 끝나면 그 변수는 사라지게 됩니다

쑤뤠이 값이 아니라 없어짐 ㅇㅇ
2011/01/02  
ruka270 inp(void){
int inp_buf;
scanf("%d",&inp_buf);
return inp_buf;
}

main(){
inp();
return 0;
}

질문하신것처럼 이 형태 자체는 에러를 발생시키지 않습니다.
하지만 그 밑에 add함수를 실행시키기 위해서는 a와 b의 값이 있어야하는데, 그중 하나라도 초기화 되어있지 않는
쓰레기값인 경우 가산 연산중 에러가 발생하는것 뿐입니다.
2011/01/03  
ruka270 main(){
printf("test:%d\n",inp());
return 0;
}

코털뽑기> 위 소스에서 main을 이렇게 바꿔도 잘 동작합니다.
2011/01/03  
capt_0669 저도 열강을 읽고있답니다

전 지금 포인터를 하고 있는 지식 짧은 선배? 로서 한번 끄저겨보죠...

뭐 일단

pg222쪽에 전달 인자는 없지만 반환 값이 있는 함수 가 바로

input(void) 혹은 a=input()의 input 이랍니다

input은 하나의 함수잖아요?

그리고 전달 인자가 없지만 return input으로서

input이 4라면 4를 출력은 안하지만

예를 들어 a라는 변수에 4를 저장합니다

하지만 input과 다르게

void Result_Print(int val)과 같은 void 함수는

input처럼 return을 안합니다. 대신

Result_Print(output);에서 int val라는 전달 인자로 output을

덧셈에 대한 결과: %d \n", val)의 val로 전달 하여줍니다

--------------------------------------------------------------------------------

a=input()에서 input()만 썼을때 오류가 뜨는 이유는

일단은 a와 b가 a=intput()와 b=input()에 인하여 초기화가 되지 않은 상태로

output=Add(a,b)란에 들어가서 인것같습니다...

input()만써서 오류가 뜨지는 않을꺼에요

#include <stdio.h>

int input(void)
{
int input;
scanf("%d", &input);
return input;
}

int main(void)
{
printf("Mother Father");

input();

return;
}

실행 시켜 보세요

Mother Father후에 아무숫자를 넣어도 오류가 나진 않습니다

다 초기화 되지 않은 변수들 때문에 에러가 나는것입니다

scanf("%d", a) 실행시켜 보시면

에러 뜹니다

왜냐하면 &,즉 초기화한다는 명령이 없기 때문이죠


초기화가 참 줌요합니다!!
2011/01/04