2014-06-11 97 views
0

任何人都可以告訴我這段代碼有什麼問題嗎? 我試圖將'amount'和'count'的值傳遞給int main,它顯示乘法。我得到錯誤「C:\ Users \ XXXX \ Desktop \ collect2.exe [錯誤] ld返回1退出狀態」與int main()突出顯示。謝謝。「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 []'將命令行參數傳遞給main,而不是嘗試定義自己的參數 –

+0

您可以給我和示例嗎?之前從未使用過argv [] – user3729092

回答

0

錯誤的原因是你的主函數的簽名是由LD,這是意料之中,因爲主要的標準簽名int main(void)int main(int argc, char** argv)拒絕。

如果你想傳遞數量和數量作爲main的參數,那就是命令行參數,你應該使用我給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()的參數。

如果傳遞的量和值通過命令行對數的值,你可以這樣

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

使用的索引1和argv 2訪問他們,因爲索引0包含的程序名

您指定語言,所以我用C++對於上面的例子,但這個想法是對C相同:

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

注意,傳入值char數組,而不是整數

相關問題