偶尔对main函数的参数感兴趣,写了个程序验证。

int main(int argc,char **argv)

首先,解释两点:

第一 、系统将参数列表,即我们在shell下输入的命令,存储到一个一维字符数组中,而且用户是可修改的,肯定没存在常量区。

第二 、argv实际上是一个char*argv[],字符指针数组,元素个数现在不清楚,至少有argc个,还有一些其他的,例如HOSTNAME,SELINUX_ROLE_REQUESTED,TERM,SHELL,HISTSIZE,SSH_CLIENT,SELINUX_USE_CURRENT_RANGE,QTDIR,QTINC,SSH_TTY,SVN_EDITOR等,

然后根据参数列表中的空格,划分各个参数,各个参数的首地址存储到argv[i]中,然后让*(argv[i]-1)=0,即用\0代替原来的空格,这样可以打印出各个参数。

下面贴出我的程序,大家可以自己试验一下。

/*argcargv.c*/

#include <stdio.h>

#include <string.h>

int main(int argc,char ** argv)

{

  int i;

  for(i=0;i<argc/*20,可以自己设定一个大于argc的值,看看argv到底有多少个元素*/;i++)

  {

    printf("%p,%s",argv[i],argv[i]);

    printf("$\n");

  }

  printf("\n");

  strcpy(argv[0],"meilidezhongguo,nihao!");

  for(i=0;i<argc,i++)

  {

    printf("%p,%s",argv[i],argv[i]);

    printf("$\n");

  }

  printf("\n");

}

程序运行: ./a.out abc 123 def 456 hello 789 world

我的电脑运行结果如下:

0xbff64758,./a.out$

0xbff64760,abc$

0xbff64764,123$

0xbff64768,def$

0xbff6476c,456$

0xbff64770,hello$

0xbff64776,789$

0xbff6477a,world$

(nil),(null)$

.......

.......

.......

.......

0xbff64758,meilidezhongguo,nihao!$

0xbff64760,hongguo,nihao!$

0xbff64764,guo,nihao!$

0xbff64768,nihao!$

0xbff6476c,o!$

0xbff64770,hello$

0xbff64776,789$

0xbff6477a,world$

也可以用

strncpy(argv[0],"meilidezhongguo,nihao!",28);

代替strcpy(argv[0],"meilidezhongguo,nihao!");

试试,

还可以看出strncpy,拷贝了22个字符,strlen("meilidezhongguo,nihao!");剩下额6个字符补上\0.

理解限制,只能补充这些,下次有了新理解,再完善!

关于main函数的参数,argc,argv的内部机制的更多相关文章

  1. main函数的参数argc和argv

    版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/20413773 该篇 ...

  2. (转)C++ main函数中参数argc和argv含义及用法

    原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: ...

  3. C++ main函数中参数argc和argv含义及用法

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

  4. C/C++基础:main函数的参数argc和argv

    转载: https://blog.csdn.net/Eastmount/article/details/20413773 一.main()函数参数 通常我们在写主函数时都是void main()或in ...

  5. [C/C++基础知识] main函数的参数argc和argv

    该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void ...

  6. c语言main函数的参数argc,argv说明

    main函数参数argc,argv说明   C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(i ...

  7. C语言中main函数的参数argc和argv

    参考资料: http://wiki.opencv.org.cn/index.php/Main%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0argc%EF%BC%8Cargv% ...

  8. main()中的参数argc, argv

    转自:http://blog.csdn.net/eastmount/article/details/20413773 一.main()函数参数 通常我们在写主函数时都是void main()或int ...

  9. Main函数中的参数argc,argv的使用简单解析

    本篇文章是对Main函数中的参数argc,argv的使用进行了简单的分析介绍,需要的朋友参考下: C/C++语言中的main函数,经常带有参数argc,argv,如下:  int main(int a ...

随机推荐

  1. hdu 1231 最大连续和

    题意:给定一组数,求最大的连续和,且输出开始与结尾 #include<iostream> #include<cstdio> using namespace std; int s ...

  2. FLUENT 流体计算应用教程

    温正 清华大学出版 2013.1                                          子谓颜渊曰,用之则行,舍之则藏,惟我与尔有是夫!         非常合适的一本书. ...

  3. Oracle之q操作符

    Oracle本身默认的是单引号,但是在大家写存储过程或者写SQL语句时,有时候需要拼SQL或者是SQL的值里需要传入含单引号的值,此时就需要使用两个单引号''''来进行转义,其实oracle本身提供了 ...

  4. 什么是SocLib

    一.SocLib简介 SoCLib是用于多处理器片上系统(MP-SoC)虚拟原型开发的开放平台.该项目始于ANR创建的项目, 现在维持在https://www.lip6.fr/.该平台的核心是用于虚拟 ...

  5. PIE SDK栅格生成等值线、面

      1.算法功能简介 等值线图能直观地展示数据的变化趋势,是众多领域展示成果的重要图建之一,被广泛应用于石油勘探.矿物开采.气象预报等众多领域.等值线的绘制是指从大量采样数据中提取出具有相同值的点的信 ...

  6. PIE SDK图层树伙伴控件示例

    1.  功能简介 TocControl控件的主要作用是显示当前加载的图层有哪些.采用什么样的符号等,目的是使用户对当前加载的数据和结构有一个总体的把握.与之相关联的伙伴控件有MapControl,Pa ...

  7. PIE SDK与Python结合说明文档

    1.功能简介 Python是一种跨平台语言.无论是在Windows.Linux.Unix还是Mac Os系统,我们都可以使用Python.甚至在Linux.Unix及Mac OS系统内已经集成了Pyt ...

  8. jumpserver 安装详解

    一,下载软件 下载前安装依赖软件 yum install -y epel-release                        yum -y install git python-pip my ...

  9. [转]JQuery控制div外点击隐藏,div内点击不会隐藏

    一直弄清楚这个效果如何实现,看了这篇博客的几行代码原来如此简单,就是利用了事件冒泡而已. 比如有个div其id为body,实现在div外点击隐藏,div内点击不隐藏,采用jQuery实现如下: $(& ...

  10. 使用 GitHub API 进行数据分析 (Node.js)

    使用 GitHub API 进行数据分析 (Node.js) Node.js 的访问 GitHub 的 API 库,通过 npm 或者 yarn 安装: yarn add github-api 官方示 ...