main函数传参
在有些C语言程序中,我们会看到main函数有如下的写法:
int main(int argc, char* argv[]);
或者是这样的:
int main(int argc, char** argv);
给main传参通过argc和argv这两个参数来实现。执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。
命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[ ] 是一个字符指针数组,指向传递给程序的每个参数。
下面是一个通过指定命令行参数实现简单计算器的程序
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int Add(int, int);
int Sub(int, int);
int Mul(int, int);
int Div(int, int);
int main(int argc, char* argv[])
{
if(argc != 4)
{
printf("Parameters should be 4.\n");
return -1;
}
int param1 = atoi(argv[1]);
int param3 = atoi(argv[3]);
if(!strcmp(argv[2], "+"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Add(param1, param3));
}
else if(!strcmp(argv[2], "-"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Sub(param1, param3));
}
else if(!strcmp(argv[2], "x"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Mul(param1, param3));
}
else if(!strcmp(argv[2], "/"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Div(param1, param3));
}
else
{
printf("Parameters fault.");
return -1;
}
return 0;
}
int Add(int a, int b)
{
return a + b;
}
int Sub(int a, int b)
{
return a - b;
}
int Mul(int a, int b)
{
return a * b;
}
int Div(int a, int b)
{
return a / b;
}
其中C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。由于命令行参数都是字符指针类型,想要对参数进行数学运算,必须把字符串转成int类型。
编译执行如下:
可以看到,通过给定不同的命令行参数,在同一个程序中可以实现不同的功能。
新人才疏学浅,有错的地方敬请指正!!
本文来自博客园,作者:夏末终年,转载请注明出处:https://www.cnblogs.com/xiamozhongnian/p/15869439.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)