2014-06-11 3 views
0

누구든지이 코드의 문제점을 알 수 있습니까? 메신저에서 'amount'와 'count'의 값을 int main으로 전달하려고 시도하면 곱셈이 표시됩니다. int main()가 강조 표시되어 "C : \ Users \ XXXX \ Desktop \ collect2.exe [오류] ld가 1 종료 상태를 반환했습니다."라는 오류 메시지가 나타납니다. 고맙습니다.간단한 프로그램에서 "ld가 1 개의 종료 상태를 반환했습니다"

#include <stdio.h> 

void show(int, int); 
int display() 
{ 
    int amount; 
    int count; 
    amount = 10; 
    count = 20; 

    return(0); 
} 

int main(int amount, int count) 
{ 
    show(amount, count); 
    int sum; 
    sum = amount * count; 

    printf("%d", sum); 


    return(0); 
} 
+0

당신은 자신의 매개 변수를 정의하려고하는 대신에'argv []'를 사용하여 명령 행 매개 변수를 주에 전달해야합니다. –

+0

나에게 줄 수 있습니까? ive는 전에 argv []를 사용하지 않았습니다. – user3729092

답변

0

오류의 원인은 메인 함수의 서명이 주요의 표준 서명 int main(void)int main(int argc, char** argv) 때문에 예상된다 LD, 거부 할 것입니다.

명령 줄 매개 변수와 같이 매개 변수로 amount와 count를 전달하려면 main에 대해 두 번째 서명을 사용해야합니다. 여기서 argv는 명령 줄 매개 변수의 배열이고 argc는 argv에있는 요소의 수. argv [0]은 명령 행 매개 변수가 아니라 프로그램이 호출되고 argv [argc]가 널 포인터라는 이름입니다.

0

직접 정의하려고 시도하는 대신 argc*argv[]을 사용하여 주체에 명령 줄 매개 변수를 전달해야합니다.

int main(int argc, char *argv[]) { 
    for (int i = 0; i < argc; ++i) { 
     std::cout << argv[i] << std::endl; 
    } 
} 

이렇게하면 main()에 전달 된 매개 변수가 명령 줄을 통해 인쇄됩니다.

당신이 양 A의 값과 명령 행을 통해 계수의 값을 전달하면 인덱스 0은 프로그램 이름이 포함되어 있기 때문에,이

int main(int argc, char *argv[]) { 
    std::cout << "amount" << argv[1] << std::endl; 
    std::cout << "count" << argv[2] << std::endl; 
} 

사용 된 인덱스 1과 argv의이 같은 액세스 할 수 있습니다

나는 위의 예를 들어 C++를 사용하므로

당신은 어떤 언어를 지정하지,하지만 아이디어는 C에 대해 동일합니다 : 입력 값이라는 것을

int main(int argc, char *argv[]) { 
    printf("amount %s", argv[1]); 
    printf("count %s", argv[2]); 
} 

주 char 배열이 아닌 정수

관련 문제