void *buf;int argc,char **argv;

void *buf

void buf 是定义了一个空指针,因为程序里有些数据的类型不确定,所以先定义一个空指针来指向它, 最后使用的时候再做类型强制转换, 如: (int)buf 或 (char*)buf
举个例子:
void *malloc(size_t size)
内存动态分配函数malloc的返回值就是一个空指针
用法如下:

void *buf ;
int* ptr;
buf = malloc(10*4);
ptr = (int*)buf;   //或者 ptr = (int*)malloc(10*4)

int argc,char **argv;

char **argv 也可以写成 char *argv[ ] 还可以写成 char argv[ ][ ],一样的效果,其目的时接受命令行的参数。
比如说你的程序时这样:

while( i  < argc){
   printf("argv[%d]: ", i);
   printf("%s\n", argv[i]);
   i++;
}

你在cmd中运行这个程序, print.exe hello, world.
那么输出应该是:
argv[0]: …../print.exe(路径)
argv[1]: hello,
argv[2]: world.
其中argc = 2, argv 就是二位数组保存了你输入的参数。
指向指针的指针,argc表示命令的个数,argv【】【】是一个二维字符数组,也就是字符串数组,表示一系列命令.

我们经常用的main函数都是不带参数的,因此main后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。

main(int argc,char **argv)
argv为指针的指针
argc为整数
char **argv or: char *argv[ ] or: char argv[ ][ ]
main()括号内是固定的写法。

下面给出一个例子来理解这两个参数的用法:

假设程序的名称为prog,

1.当只输入prog,则由操作系统传来的参数为:

argc=1,表示只有一程序名称。
argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog

2.当输入prog para_1,有一个参数,则由操作系统传来的参数为:

argc=2,表示除了程序名外还有一个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。

3.当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:

argc=3,表示除了程序名外还有2个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。
argv[2]指向参数para_2字符串

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值