可能重复:
在 C 中,数组是指针还是用作指针?
在 C++ 中,默认的 main 函数可以有 char* argv[] 之类的参数。它与 char** 和 char* argv[100] 有什么区别?
可能重复:
在 C 中,数组是指针还是用作指针?
在 C++ 中,默认的 main 函数可以有 char* argv[] 之类的参数。它与 char** 和 char* argv[100] 有什么区别?
函数参数没有区别。在其他情况下,第一个声明一个指针,第二个声明一个数组。
char**
是指向 a 的指针的指针char
。
第二个char *argv[100]
是指向 char 的指针数组。
但是,当您将数组传递给函数时,它们会衰减为指针。
char** argv
:要引发与 char* argv[100] 相同的行为,您必须动态分配空间来存储 char 指针。例如:(*argv) = new char[100];
双指针是 C++ 独有的一种非常灵活的数据类型,它可以赋予疯狂的速度和疯狂的错误。通常,如果您知道数组的大小,最好避免动态内存分配。