int main 中的双指针

发布于 2024-12-11 10:03:10 字数 316 浏览 0 评论 0原文

我仍在尝试了解双指针。

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

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

I am still trying to understand about doublepointers.

I do know how double pointers are usually used in most cases like

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

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

However i have no idea what one does differently than the other

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

方圜几里 2024-12-18 10:03:10

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

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

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

When used as a parameter to a function, an array designator [] is exactly the same as a pointer. The two declarations you have for main are in fact identical.

There are times when the two different syntaxes mean different things, but this isn't one of them.

In this case it means you have an array of pointers. Each pointer points to an array of characters. argv[0] is a pointer to the first char* string, argv[1] is a pointer to the second char* string, etc.

厌味 2024-12-18 10:03:10

我感受到你的痛苦!我花了很长时间才说服自己,我应该一视同仁地对待他们。

argv[1] 指向第一个参数,argv[argc-1] 指向最后一个参数。是的,各位神枪手,这是真的,当且仅当 argc > 0.

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

I feel your pain! It took me a long time to convince myself that I should treat them exactly the same.

argv[1] points to the first parameter, argv[argc-1] points to the final parameter. Yes, all you sharpshooters, that's true iff argc > 0.

That's my formula and I'm stickin' to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文