2011-10-21 134 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.

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