2011-10-21 98 views
1

我仍然試圖瞭解關於doublepointers。int main中的雙指針

我知道指針如何雙在大多數情況下,通常使用像

void foo(char **ptr) 
{ 
// blah 
} 

int main(void) 
{ 
    char *ptr; 
    foo(&ptr); 
} 

但是我不知道是什麼人做比其他

int main(int argc, char **argv) //Double pointer 

int main(int argc, char *argv[]) // Single 
+0

這段文字解釋了指針並幫助了我很多。可能很有趣? http://cslibrary.stanford.edu/102/PointersAndMemory.pdf – marko

+0

[我應該在C中使用char ** argv還是char * argv \ [\]?](http://stackoverflow.com/問題/ 779910 /應-I-使用炭-的argv - 或炭的argv-在-c)的 – sidyll

回答

3

不同時,作爲參數的使用函數,數組指示符[]與指針完全相同。您擁有的main的兩個聲明實際上是相同的。

有時候,兩種不同的語法意味着不同的東西,但這不是其中之一。

在這種情況下,它意味着你有一個指針數組。每個指針指向一個字符數組。 argv[0]是指向第一個char*的字符串,argv[1]是指向第二個char*的字符串等。

2

我感覺你的痛苦!我花了很長時間才說服自己,我應該對待他們完全一樣。

argv [1]指向第一個參數,argv [argc-1]指向最終參數。是的,你所有的神槍手,這是真的iff argc> 0.

這是我的公式,我粘着它。