在学习Linux C的编程中,int main(int argc,char* argv[])这个主函数样子应该不少见,那要怎么理解呢?传入字符串后,如果你会使用传入后的字符串中的单个字符,理解其中的原理,那么就不用往下看了。
argc是一个整型,指的是往主函数传入字符串的个数。
比如:
编译好test.c这个文件后生成可执行文件test,敲指令 ./test test1 test2 test3
这时argc为4,分别为test,test1,est2,test3。
argv[]是一个指针数组,即每个数组元素都为一个指针,即每个数组元素都是一个地址变量,每个元素存储的是字符串的地首地址(字符串本身就是它的首地址)。
所以,用上面的例子,
printf("%s\n",argv[0]); 显示:test
printf("%s\n",argv[1]); 显示:test1
printf("%s\n",argv[2]); 显示:test2
printf("%s\n",argv[3]); 显示:test3
上面说的传入来的字符串的使用,如果我要使用传入来的字符串中的单个字符呢?那么就要先理解字符串的最基本概念了。
C语言中没有字符串这一种类型,但是它的存储方式是一维数组的方式存储的,所以一个字符串就是一个数组,字符串本身就是这个数组的首地址。
比如:
char a[]="test";
printf("%c\n",a[0]); 显示t
等于
printf("%c\n","test"[0]); 显示t
因为"test"就是字符串test的首地址,相当于a[]中的a.
所以,要用传入进来的argv[]中的单个字符,按上面的理解,不是一件很简单的事情吗?
如:
./test test1 (这样子输入指令)
printf("%s\n",argv[1]); 显示:test1
printf("%c\n",argv[1][0]); 显示:t
printf("%c\n",argv[1][1]); 显示:e