小朋友学C语言(34):main函数的参数

C/C++中的main()函数,可以带形式参数,也可以不带形式参数。这两种形式分别为: 1)int main() 2)int main(int argc, char *argv[]) 或者 int main(int argc, char **argv) 因为main()函数通常是由操作系统调用的,所以平时写程序,基本上不用带参数。但是从学习的角度来看,了解一下参数也是有益处的。

第一个参数,argc是argument count的缩写,表示“参数个数”。 第二个参数,argv[]是argument vector的缩写,表示指向字符串(即字符数组)的指针数组。咱们之前学过指针,那么指针数组是什么意思呢?顾名思义,指针数组是表示一组指针。 指向字符串的指针数组就表示为:有一组指针,这组指针里的每个指针,都指向了一个字符串。

下面用一个具体的程序,来帮助理解。这个程序是在Win 10系统下用Dev C++编的。

#include <stdio.h>
int main(int argc, char *argv[]) 
{
    printf("There are %d arguments in total\n", argc);
    int i;
    for(i = 0; i < argc; i ++)
    {
        printf("Argument %d = %s\n", i+1, argv[i]);
    }
    return 0;
}

程序编完之后保存,但不要编译,可以看到源文件有两个:

点击“编译”按纽后,多了test.o和Test.exe文件。

test.o为目标文件,这里的o即为Object的缩写。 test.o进一步转化为Test.exe。Test.exe是Windows操作系统下的可执行文件。exe是Executable的缩写。

点击“Run”按纽,实际上就是运行Test.exe文件

运行结果为

exe文件后面是可以带参数的。下面,用另一种方式运行Test.exe,并且后面带上参数。 打开命令行窗口,输入F:\C_Projects\Test.exe how are you? 这种形式是可执行文件后面带了三个参数,以分隔号来表示。

如果不加任何参数,在命令行窗口执行exe文件,就相当于点击编译器里的“Run”按纽

原文发布于微信公众号 - 海天一树(gh_de7b45c40e8b)

原文发表时间:2017-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jackson0714

PHP内核之旅-4.可变长度的字符串

3106
来自专栏我的技术专栏

《effective Go》读后记录:GO基础

2354
来自专栏Jackson0714

PHP内核之旅-4.可变长度的字符串

1233
来自专栏阮一峰的网络日志

xpath路径表达式笔记

xpath可以用来选择这7种节点。不过,下面的笔记只涉及最常用的第一种element(元素节点),因此可以将下文中的节点和元素视为同义词。

1552
来自专栏耕耘实录

Linux通配符的使用详解

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。

1383
来自专栏LIN_ZONE

Shell编程基础

请参考:菜鸟教程参数传递 在执行脚本的时候可以向脚本传递参数,脚本获取参数的格式为:$n

722
来自专栏全栈之路

golang教程

这里有两个关键点。 - 其一是defer关键字。defer语句的含义是不管程序是否出现异常,均 在函数退出时自动执行相关代码。 - 其二是Go语言的函数允许返回...

4762
来自专栏软件测试经验与教训

上期答案

3375
来自专栏梧雨北辰的开发录

Swift学习:协议

本篇将详细总结介绍Swift协议的用法; 协议是定义一些规范(属性、功能方法),然后由类、结构体或者枚举遵循并实现这些规范,这一过程被称为遵循了协议。

852
来自专栏Laoqi's Linux运维专列

sed命令扩展–转载

文本处理工具之二 sed命令详解 sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以...

3055

扫码关注云+社区

领取腾讯云代金券