我仍在尝试了解双指针。
我知道在大多数情况下通常会使用双指针,例如
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 :(得分:3)
当用作函数的参数时,数组指示符[]
与指针完全相同。您对main
的两个声明实际上是相同的。
有时候两种不同的语法意味着不同的东西,但这不是其中之一。
在这种情况下,它意味着你有一个指针数组。每个指针指向一个字符数组。 argv[0]
是指向第一个char*
字符串的指针,argv[1]
是指向第二个char*
字符串的指针等。
答案 1 :(得分:2)
我感觉到你的痛苦!我花了很长时间才说服自己,我应该完全相同。
argv [1]指向第一个参数,argv [argc-1]指向最后一个参数。是的,所有你是神枪手,这是真的iff argc> 0
这是我的公式,我坚持下去。