2012-05-08 10 views
1

여기서 C를 배우면 함수 프로토 타입을 사용하는 방법에 대해 혼란 스럽습니다.C 함수 프로토 타입

나는 주로 main 함수를 호출하는 데 문제가 있습니다. 이 모든 일은 기억에있는 것이 무엇이든 인쇄되기 때문에 나는 뭔가를 엉망으로 만들 것이라고 확신합니다.

도움 주셔서 감사합니다.

int main() 
{ 
    double source_volt(double vs); //You already declared the function, 
            //you dont need the doubles 
    double vs; 
    printf("%lf", vs); 
    return 0; 
} 

대신 :

int main() 
{ 
    double vs; 
    vs = double source_volt(vs); //The double keyword is gone 
    printf("%lf", vs); 
    return 0; 
} 

을하지만 실제로는, 당신은 소스 볼트의 모든 인수가 필요하지 않습니다

#include <stdio.h> 


double source_volt(double vs); 


int main() 
{ 
    double source_volt(double vs); 
    double vs; 
    printf("%lf", vs); 
    return 0; 
} 


double source_volt(double vs) 
{ 

    int valid = 0; 
    do 
    { 
     printf("Enter source voltage Vs in volts: "); 
     scanf("%lf", &vs); 

     if (vs < 0 || vs > 100) 
     { 
      valid = 0; 
      printf("Please enter a number between 0 and 100.\n"); 
     } 
     else 
      valid = 1; 
    }while(!valid); 
    return vs; 
} 
+1

'함수 선언', '함수 정의', '함수 호출 방법'등의 교과서를 읽었습니다. 함수에 대한 기본적인 이해가 부족한 것처럼이 질문에 대한 답은 분명 도움이되지 않습니다. –

+0

'source_volt'가 값에 의해 매개 변수를 전달하는 이유는 무엇입니까? 대신 당신이 그것의 주소를 전달하고 함수가 void 타입을 반환하게하고 싶다고 생각합니다. – Mahesh

답변

3

이 당신을 위해 작동하지 않는 것입니다.

당신은 다시 쓸 수 기능에 :

double source_volt(void) 
{ 
    double vs; 
    int valid = 0; 
    do 
    { 
     printf("Enter source voltage Vs in volts: "); 
     scanf("%lf", &vs); 

     if (vs < 0 || vs > 100) 
     { 
      valid = 0; 
      printf("Please enter a number between 0 and 100.\n"); 
     } 
     else 
      valid = 1; 
    }while(!valid); 
    return vs; 
} 
2

주요 double source_volt(double vs); 내부의 선이 실제로 기능을 redeclares는. 그리고 나서 초기화하지 않고 메인의 vs이 사용되고 있습니다.

가과 같이 호출 할 것입니다 정의되어 같은 기능 source_volt :

double vs; 
vs = source_volt(vs); 

그러나 나는 또한 상점 기능에 더블을 전달하여 아무것도 확보하지 않는 점을 지적하고 싶습니다. source_volt에 로컬 변수를 선언하고 동일한 결과를 얻으려면이를 반환 할 수 있습니다.