2014-09-11 60 views
-2

是否可以將所有參數放入數組列表並傳遞給新函數?我將如何開始工作?數組列表中的參數並傳遞給新函數? C

例如:

int arr(char *argv[]); 
int main(int argc, char *argv[]){ 
    //how do I start? Run the for-loop to get all the arguments from the command line. Then how do I pass to arr function. 
} 

int arr(char *argv[]){ 
    //return printing out all the arguments. 
} 

我怎麼會得到所有命令行參數arr中的功能?例子會很棒。我只是無法弄清楚如何獲得新功能的所有參數。

+2

不太確定你的意思 - 你是說可以將數組傳遞給函數嗎?如果是這樣,那麼是的,這是可能的。只需將該數組名稱給該函數即可。所以在你的情況下,arr(argv);' – jackarms 2014-09-11 00:24:21

+1

'argv' **是來自命令行的所有參數。你不需要for循環來獲取它們。只需通過'arr(argv)'將它直接傳遞給'arr()'。 – 2014-09-11 00:24:30

+0

@jackarms快速問題,這是什麼意思? '警告:函數的隱式聲明'arr'' – Salman2013 2014-09-11 00:41:05

回答

1
int arr(char *argv[]); 
int main(int argc, char *argv[]){ 
    arr(argv+1); 
    return 0; 
} 

int arr(char *argv[]){ 
    while(*argv) 
     puts(*argv++); 
    return 1; 
} 
+0

注意,這是有效的,因爲它被指定(至少在Posix系統上,也許在C99中)'main'的'argv'參數具有'argc + 1'元素,最後一個是'NULL'。對於其他字符串數組(例如程序中內置的字符串),這不一定是正確的。所以在實踐中,處理數組的函數也需要它們的維度! – 2014-09-11 00:37:40

+0

@BasileStarynkevitch是的,我知道。估計是這樣一個規範,因爲它沒有指定函數'arr'。 – BLUEPIXY 2014-09-11 00:42:13

+0

@BLUEPIXY感謝您的快速回復。 – Salman2013 2014-09-11 00:47:44