通过参数列表向C语言传递参数

       虽然很多时候写C语言main函数的时候都选择把形参写为空,也就是void,但是这并不是唯一的写法。C语言实际上支持向主函数传递两个参数,此时的函数原型如下:

       int main(int  argc, char **argv);

       其中,第一个参数用于代表参数的个数;第二个参数则是用于向程序传递参数的列表,通常是一组值。写代码如下:

#include"stdio.h"

 

int main(int argc,char **argv)

{

       while(*++argv != NULL)

       {

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

       }

       return 0;

}

       通过上面的程序,可以实现输出向主函数传递的参数列表。之所以在判断的时候进行了指针的自加是为了避开第一个参数,参数列表的第一个参数其实是程序的名字。

       程序编译执行如下:

E:\WorkSpace\01_编程语言\01_C语言\exp_09>gcc  exp_09.c -o  a(其中“a”是编译生成的文件可执行程序。

E:\WorkSpace\01_编程语言\01_C语言\exp_09>a hello c lang world

hello

c

lang

world

       回过头来再多看一点东西,看一下第一个参数的信息。修改代码直接打印出整个参数列表,代码修改如下:

#include"stdio.h"

 

int main(int argc,char **argv)

{

       while(*argv != NULL)

       {

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

              argv++;

       }

       return 0;

}

 

       编译执行如下:

E:\WorkSpace\01_编程语言\01_C语言\exp_09>gcc exp_09.c

 

E:\WorkSpace\01_编程语言\01_C语言\exp_09>a hello c lang world

a

hello

c

lang

world

       通过以上结果可以看出,本次程序的执行多输出了一个信息,也就是第一行的a。其实,由于采用了gcc默认的编译方式,生成的可执行文件名称就是a。通过程序的行为推测,这个参数的获取应该是通过操作系统接口获知了当前的文件名称。接下来不做编译,直接把a修改一下名字继续以下测试:

E:\WorkSpace\01_编程语言\01_C语言\exp_09>copy a.exe test.exe

已复制         1 个文件。

 

E:\WorkSpace\01_编程语言\01_C语言\exp_09>test hello c lang world

test

hello

c

lang

world

       通过执行结果可以看出,其实程序名称的获取信息并不是来源于编译阶段而是来自于执行阶段。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值