关于main(int argc, char* argv[])的理解
来源:互联网 发布:大麦网 数据 编辑:程序博客网 时间:2024/05/22 03:28
关于main(int argc, char* argv[])的理
:以前对main函数中的参数设置有一些理解,以为很简单,不就是argc是参数数量,argv是字符串数组,但是昨天写多进程的问题确实碰到了麻烦,今天仔细想了想其中的问题还确实不少。其中涉及到的问题也是方方面面的。下面就将做一个仔细的解析。
问题描述:主进程启动多个子进程程序是需要向子进程程序传输参数,而我们知道如果向程序中传递参数也就是向main函数中传递参数,需要用到argv数组来存储参数,读取这个参数就需要对argv数组进行访问,对于这个问题我始终难以调试通过,今天仔细想了想是因为访问了野指针。
下面看一段代码,这段代码中没有任何操作,直接打印数组argv的信息。
得到的运行结果如图示:
可以发现在没有任何参数输入的条件下,数组argv并不为空,而是含有一个参数,也就是当前执行文件的路径及文件名。这个可执行文件存储在argv[0]中。
下面利用VS2005的项目属性->调试->命令参数设置输入参数“I am gecko”,继续运行程序。
得到的结果如图所示
也就是发现输入参数是从argv[1]开始填充,argv[0]的位置依旧是存储的执行文件的路径以及文件名。
问题也就会在这里出现,如果使用的VS2005对程序进行调试,同时没有在命令参数中设置参数的话,如果访问argv[1]以后的位置就会报错。
出现上面的情况有种最大的可能就是对空指针进行操作了。(话说以前经常碰到这样的问题,弄得一头雾水)
这种情况的处理办法,可以在对指针进行操作时,首先对参数个数进行一次检测。
其实: int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法..下面看个例子 edit.c 。
编译该程序:gcc -o edit edit.c
运行:./edit
结果:请输入想要编辑的文件名如:./edit fille
运行:./edit edit.txt
结果:编辑 edit.txt
看到这里 argc,argv[] 如何用就很明白了,argc 是外部命令参数的个数,argv[] 存放各参数的内容,如上例:执行 ./edit 时,argc 为1,
argv[0] 为 ./edit .而执行 ./edit edit.txt 时,argc 的值为 2,
argv[0] 为 ./edit,argv[1] 为 edit.txt .
阅读全文
2 0
- 关于 int main(int argc,char*arg[])与 int main(int argc,char**argv)的理解
- 关于int main(int argc,char*argv[])的理解
- 关于main(int argc, char* argv[])的理解
- 关于main(int argc, char* argv[])的理解
- 关于main(int argc, char* argv[])的理解
- 关于main(int argc, char* argv[])的理解
- 关于main(int argc, char* argv[])的理解
- 理解 int main(int argc,char *argv[])
- int main(int argc, char* argv[])理解
- 对int main(int argc,char* argv[])的理解
- 关于int main(int argc,char *argv[])
- 关于int main(int argc, char*argv[])
- 关于int main(int argc,char *argv[])的问题
- 关于 int main(int argc,char* argv[]) 的
- 关于int main(int argc,char* argv[])的说明
- 关于int main(int argc,char*argv[])的玩意
- 理解 void main(int argc, char** argv)
- c++main(int argc,char *argv[])的理解
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能
- Java设计模式概论
- hive2.3.0配置mysql作为元数据库出现无法实例化问题及解决办法
- 【语言转换】MATLAB转IDL遇到的问题——数组条件比较获得二值图
- i.mx6q LVDS 驱动修改记录,修改imx6液晶时钟
- 关于main(int argc, char* argv[])的理解
- 监控ElasticSearch性能指标
- 敏捷开发
- 计算等价类
- 常用adb口令
- Linux服务器下使用putty pscp配置java环境
- Linux定时任务-java程序
- nfs连接
- Spring Tool Suite(STS3.9.0)自动导包快捷键设置问题