您的位置:首页 > 大数据 > 人工智能

main()函数参数说明!

2012-10-25 11:10 489 查看


main()函数参数说明!

int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法..

argc是argument count的缩写,表示参数的个数,argv是argument value的缩写,表示参数的值

main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。

main(int argc,char**argv)

argv为指针的指针

argc为整数

char**argv or: char*argv[ ] or: char argv[ ][ ]

main0.c

int main(int argc, char *argv[])

{

int i = 0;

printf("argc: %d\n", argc);

for(i = 0; i < argc; i++)

{

printf("Arg %d : %s\n", i + 1, argv[i]);

}

return 0;

}

gcc -o main0 main0.c

# ./main0

argc:1

arg 1 :./main0

# ./main0 aa bbb

argc:3

arg 1 :./main0

arg 2 :aa

arg 3 :bbb

需要在程序里面使用这些参数的话,可以模仿上面的代码。

main1.c

#inculde <stdio.h>

main(int argc,char *argv[]){

while(argc-->1)

printf("%s\n",*++argv);

}

本例是显示命令行中输入的参数。

因此输入的命令行为: gcc -o main1 main1.c

./main1 aa bbb cccc

则运行结果为:

aa

bbb

ccc  该行共有4个参数,执行main时,argc的初值即为4。argv的4个元素分为4个字符串的首地址。执行while语句,每循环一次 argv值减1,当argv等于1时停止循环,共循环三次, 因此共可输出三个参数。在printf函数中,由于打印项*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、 三次循环分别打印后二个字符串。而参数main1是文件名,不必输出。

执行./main1 argv[0]为./main1 ;执行./main1 aa bbb cccc ,argc 的值为4 ,argv[0]为./main1 、

argv[1]为 aa ,。。。。。。

下例的命令行中有两个参数,第二个参数10即为输入的n值。在程序中*++argv的值为字符串“20”,然后用函数"atoi"把它换为整型作为while语句中的循环控制变量,输出10个偶数。

#inculde <stdio.h>

#include"stdlib.h"

main(int argc,char*argv[]){

int a=0,n;

n=atoi(*++argv);

while(n--) printf("%d ",a++*2);

}  本程序是从0开始输出n个偶数。 gcc -o main2 main2.c

./main2 10

指向指针的指针变量如果一个指针变量存放的又是另一个指针变量的地址, 则称这个指针变量为指向指针的指针变量。

通过指针访问变量称为间接访问, 简称间访。由于指针变量直接指向变量,所以称为单级间访。 而如果通过指向指针的指针变量来访问变量则构成了二级或多级间访。

指向指针的指针变量说明的一般形式为:int ** pp; 表示pp是一个指针变量,它指向另一个指针变量, 而这个指针变量指向一个整型量。

example: main3.c

main(){

int x,*p,**pp;

x=10;

p=&x;

pp=&p;

printf("x=%d\n",**pp);

} aa

  上例程序中p 是一个指针变量,指向整型量x;pp也是一个指针变量, 它指向指针变量p。通过pp变量访问x的写法是**pp。程序最后输出x的值为10。通过上例,可以学习指向指针的指针变量的说明和使用方法。

main4.c

main(){

static char *ps[]={ "BASIC","DBASE","C","FORTRAN",

"PASCAL"};

char **pps;

int i;

for(i=0;i<5;i++){

pps=ps+i;

printf("%s\n",*pps);

}

}

本程序是用指向指针的指针变量编程,输出多个字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: