argc和argv的目的是什么?
what is the purpose of argc and argv?
int main( int argc, char ** argv ){
//code here
return 0; }
我知道:
-
argc
is表示包含文件名 的命令行参数的个数。 -
char ** argv
应该是初始表示为char* argv[]
的数组的
char*
假设我是对的,与char * argv[]
相比,相对较新的符号char **argv
是什么?它指向什么?
我读了这篇文章C/c++的main函数's参数在哪里?然而,它似乎解释了参数的位置,而不是其他。
C标准中带有参数的main
原型为:
int main(int argc, char *argv[]) { ... }
现在,在C语言中,数组类型的函数参数调整为1)为类型指针,即:
void foo(T param[])
等价于
void foo(T *param)
所以对main
参数使用char *argv[]
或char **argv
是完全相同的。
1) (C99, 6.7.5.3函数声明符(包括原型))"[…(在确定类型兼容性和复合类型时,使用函数或数组类型声明的每个形参都被视为具有调整后的类型,而使用限定类型声明的每个形参都被视为具有其声明类型的非限定版本。)"
在C/c++中,不能按值将数组传递给函数。可以传递指向数组或其引用的指针。当用作函数形参时,数组类型相当于指针类型,即
void foo(int arr[]);
等价于
void foo(int *arr);
同理,int *argv[]
等价于int **argv
。
但请注意,只有当数组类型用作函数的形参时才成立,否则数组和指针是两种不同的类型。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 文件系统:复制功能的速度秘诀是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- GTEST_API_ int main(int argc, char **argv){}中的GTEST_API_是什么?
- argc和argv的目的是什么?