main函数参数的使用和指针数组的理解结合实例

对于main函数。我想不论什么一个接触到C语言的都不会陌生,可是说起main()函数有參数,你可能会产生非常多疑问了。

在这里,我们能够看到main()函数事实上是含有三个參数的,各自是

int argc, char *argv[ ], char *envp[ ]

这三个參数事实上就是main函数的參数。

在c的编译器中。通常是同意main函数是没有參数的。

1.argc (argument count) 
这第一个參数是int类型的argc,argc是一个整数。从字面上的意思我们就知道,他说的是给參数计数,指定有多少个參数被传递给命令行的程序。argc至少是1。 
2.argv(argument value) 
argv 第二个參数是一个指向字符串的指针数组。

命令行中的每一个字符串被存储到内存中,而且分配一个指针指向它。它存放了命令行的參数。


在通常,系统使用空格把各个字符串隔开,然后把程序本身的名字赋给argv[0],把系统最后一个字符串赋给argv[1]。 
3.envp 
这个不经常使用,用来存放系统的环境变量,而且是以NULL结尾。

1.使用main函数的參数,实现一个整数计算器,程序能够接受三个參数,第一个參数“-a”选项运行加法。“-s”选项运行减法,“-m”选项运行乘法,“-d”选项运行除法,后面两个參数为操作数。

比如:输入test.exe -a 1 2 
运行1+2输出3

#include<stdio.h>

#include<windows.h>

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

{

int ret=0;

int num1=atoi(argv[2]);

int num2=atoi(argv[3]);

if(argv!=4)

{

printf("输入错误\n");

return 1;

}

if(argv[1][0]=='-')

{

switch(argv[1][1])

{

case 'a':

ret=num1+num2;

printf("%d\n",ret);

break;

case 's':

ret=num1-num2;

printf("%d\n",ret);

break;

case 'm':

ret=num1*num2;

printf("%d\n",ret);

break;

case 'd':

ret=num1/num2;

printf("%d\n",ret);

break;

default:printf("第二个参数错误\n");

break;

}

}

system("pause");

return 0;

}

后期更新!

猜你喜欢

转载自blog.csdn.net/CDatreides/article/details/80356556