标签搜索

关于C语言argc与arcv参数

Toanle
2021-05-07 / 0 评论 / 14 阅读 / 正在检测是否收录...

在C语言与C++编程中我们会经常看到(int argc, char *argv[])这两个参数那么他们有什么作用纳;
C语言程式的main函数如果不需要读取任何来自于命令列的参数,则main函数就使用最简单的写法即可:

#include <stdio.h>
int main() {
  return 0;
}
若需要将执行程式时,使用者所输入的命令列参数读取进来,则可在main函数中加上argc与argv两个参数:

include <stdio.h>

int main( int argc, char *argv[]) {
printf( "We have %d arguments: n " , argc);
for ( int i = 0 ; i < argc; ++i) {

printf( "[ %d ] %s \n " , i, argv[i]);

}
return 0 ;
}

我们使用gcc编译:

gcc -o argv argv.c

执行时就可以在命令列输入要传给程式的参数:
./argv txst anle ss
输出如下:
We have 4 arguments:
[0] ./arcv
[1] txst
[2] anle
[3] ss
argv阵列中包含了在命令列中所输入的每一个参数,其中第一个元素是程式本身的名称(在这里就是./argv),之后就是执行时所输入的各个参数,其排列顺序就跟输入时的顺序相同。而argc是一个整数,其值就是argv阵列的长度。

若执行程式时,不加任何参数,argv的长度(argc的值)就会是1,也就是说argv就只包含程式本身的名称:
这是C++版本的程式码,argc与argv的用法完全相同:

include <iostream>

int main( int argc, char *argv[]) {
std::cout << "We have " << argc << " arguments" << std::endl;
for ( int i = 0 ; i < argc; ++i) {

std::cout << "[" << i << "] " << argv[i] << std::endl;

}
return 0 ;
}

编译输出与上面一样;
有些人会把*argv[]写成**argv这种不同的写法,就像这样:

int main( int argc, char **argv) {
// ...
}

两种不同的写法都是通用的,使用上没有太大的差异。
0

评论 (0)

取消