int main中的双指针

时间:2011-10-21 21:26:32

标签: c pointers

我仍在尝试了解双指针。

我知道在大多数情况下通常会使用双指针,例如

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

2 个答案:

答案 0 :(得分:3)

当用作函数的参数时,数组指示符[]与指针完全相同。您对main的两个声明实际上是相同的。

有时候两种不同的语法意味着不同的东西,但这不是其中之一。

在这种情况下,它意味着你有一个指针数组。每个指针指向一个字符数组。 argv[0]是指向第一个char*字符串的指针,argv[1]是指向第二个char*字符串的指针等。

答案 1 :(得分:2)

我感觉到你的痛苦!我花了很长时间才说服自己,我应该完全相同。

argv [1]指向第一个参数,argv [argc-1]指向最后一个参数。是的,所有你是神枪手,这是真的iff argc> 0

这是我的公式,我坚持下去。