argc和argv的目的是什么?

Den*_*son 3 c c++

int main( int argc, char ** argv ){
//code here
 return 0; }   
Run Code Online (Sandbox Code Playgroud)

我知道:

  1. argc is表示包含文件名的命令行参数的数量
  2. char ** argv应该是一个char*最初表示为的数组char* argv[]

假设我是对的,与相对较新的符号char **argv相比是char * argv[]什么?它指向什么?

我看过这篇文章 C/C++主要功能的参数在哪里?但它似乎解释了争论的位置,而不是别的.

oua*_*uah 8

mainC标准中带参数的原型是:

int main(int argc, char *argv[]) { ... }
Run Code Online (Sandbox Code Playgroud)

现在在C中,类型数组的函数参数被调整 1)到类型指针,即:

void foo(T param[])
Run Code Online (Sandbox Code Playgroud)

相当于

void foo(T *param)
Run Code Online (Sandbox Code Playgroud)

所以使用char *argv[]char **argv用于main参数是完全一样的.


1)(C99,6.7.5.3函数声明符(包括原型)p15)"[...](在确定类型兼容性和复合类型时,使用函数或数组类型声明的每个参数都被视为具有调整后的类型并且使用限定类型声明的每个参数都被视为具有其声明类型的非限定版本.)"