主题 : 通俗科普C语言main函数的参数
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 605022
威望: 528940 点
无痕币: 5 WHB
贡献值: 0 点
在线时间: 62073(时)
注册时间: 2008-12-25
最后登录: 2024-04-20

0 通俗科普C语言main函数的参数

对于C语言的初学者,关于main函数这个程序主入口一定接触得再多不过了。我们来看看下面几种常见的入门程序——Hello World:
如果是由国内老教材(例如NCRE二级C语言)入门的,你见到的可能是下面这个:
#include <stdio.h>
void main() {
printf("Hello World!");
}
如果是新一点的教材,也可能是这样:
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
如果和笔者一样翻阅过《C Primer Plus》,或许还能找到一个不一样的表达:
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("Hello World!");
return 0;
}
实际上,Xcode默认的C语言模版正是这样的写法。
那么,这个多出来的main函数参数究竟是什么呢?
main函数作为程序主入口,其参数其实就是程序运行的参数。
第一个参数,整型,通常命名为argc,代表参数个数。argc是一个正整数,因为程序所在的路径即第一个参数。
第二个参数,通常命名为argv,是一个指向字符串的指针数组。这是一个个参数的集合,依次以指针形式依次存放在数组中。
所以,光是写一个Hello World实在是太浪费这个参数啦有木有?其实参数的作用还可以这么理解:
比方说移动文件/重命名用的mv指令,如果是一个C语言程序……
mv 1.h 2.h
调用程序的指令”mv”就是第一个参数,”1.h”、”2.h”分别是第二个和第三个参数,argc的值就是3。
最简单的应用见下:
#include <stdio.h>
//以下实现一个反序输出参数的C语言程序
int main(int argc, char* argv[]) {
printf("This program runs in %s", argv[0]);
//判断是否有外部参数
if(argc > 1) {
printf(", whose arguments are reversed as follows: \n");
//反序遍历
for(int argx = argc - 1; argx > 0; argx--) printf("%s\n", argv[argx]);
} else printf(" with no argument. ");
return 0;
}
级别: 九滴秋露

UID: 103037
精华: 0
发帖: 15202
威望: 97907 点
无痕币: 5 WHB
贡献值: 0 点
在线时间: 6631(时)
注册时间: 2010-09-22
最后登录: 2024-03-19

了解一下看看了。
级别: 九滴秋露
UID: 2840
精华: 0
发帖: 32712
威望: 121596 点
无痕币: 123293 WHB
贡献值: 0 点
在线时间: 27244(时)
注册时间: 2007-12-04
最后登录: 2024-04-20

这个学习一下
级别: 十方秋水

UID: 26730
精华: 0
发帖: 64722
威望: 148036 点
无痕币: 183 WHB
贡献值: 0 点
在线时间: 11530(时)
注册时间: 2008-05-03
最后登录: 2018-05-16

多谢分享了
Total 0.049558(s) query 4, Time now is:04-20 17:14, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛