main函数的参数(一)
2015-08-21 19:03
429 查看
(以下代码全都在linux gcc上运行)
在C语言编程中,函数非常常见。main()也是一种函数,而且C程序总是从main函数开始执行。为什么呢?
来看《UNIX环境高级编程》中的一段话:
内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址—这是由连接编辑器设置的,而连接编辑器则由C编译器调用。
看不懂的话,首先记住main()是程序执行的入口就行了。
许多函数都是有返回值,有参数的。比如:
int func(int a);
那么,main函数有没有参数呢,许多时候我们都是把它当做无参数函数来使用的。
这是我们大多数人入手的第一个函数,这样子写是完全可以的,没有错误,可以运行。
但是,其实main()函数更其它函数一样也都是有爹有妈(参数)的。因为它也是一个函数啊!
main函数的原型是:
int main(int argc,char *argv[])或者int main(int argc,char**argv)
其中,argc是命令行参数的个数,argv是指向参数的各个指针所构成的数组。一言以避之,就是argc表示参数的个数包括执行文件名;而argv来存放参数。这样有可能不直观,让我们来看一段代码:
输入:./hello
输出:argv[0]: ./hello
这就说明当在命令行只输入:./hello这一个参数时,argc为1。并且./hello存储在argv[0]中,这里就可以看出argv就相当于一个二维数组。
当在命令行多输入几个参数时:
输入:./hello hello1 hello2 hello3
输出:
argv[0]: ./hello
argv[1]: hello1
argv[2]: hello2
argv[3]: hello3
现在应该就明了了,但这只是一个初步的了解,关于它还会有更深入的应用。后面在代码中遇到再看吧。
在C语言编程中,函数非常常见。main()也是一种函数,而且C程序总是从main函数开始执行。为什么呢?
来看《UNIX环境高级编程》中的一段话:
内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址—这是由连接编辑器设置的,而连接编辑器则由C编译器调用。
看不懂的话,首先记住main()是程序执行的入口就行了。
许多函数都是有返回值,有参数的。比如:
int func(int a);
那么,main函数有没有参数呢,许多时候我们都是把它当做无参数函数来使用的。
#include<stdio.h> int main() { printf("Hello World!"); return 0; }
这是我们大多数人入手的第一个函数,这样子写是完全可以的,没有错误,可以运行。
但是,其实main()函数更其它函数一样也都是有爹有妈(参数)的。因为它也是一个函数啊!
main函数的原型是:
int main(int argc,char *argv[])或者int main(int argc,char**argv)
其中,argc是命令行参数的个数,argv是指向参数的各个指针所构成的数组。一言以避之,就是argc表示参数的个数包括执行文件名;而argv来存放参数。这样有可能不直观,让我们来看一段代码:
#include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(int argc,char* argv[]) { int i=0; for(i=0;i<argc;i++) { printf("argv[%d]: %s\n",i,argv[i]); } exit(0); }
输入:./hello
输出:argv[0]: ./hello
这就说明当在命令行只输入:./hello这一个参数时,argc为1。并且./hello存储在argv[0]中,这里就可以看出argv就相当于一个二维数组。
当在命令行多输入几个参数时:
输入:./hello hello1 hello2 hello3
输出:
argv[0]: ./hello
argv[1]: hello1
argv[2]: hello2
argv[3]: hello3
现在应该就明了了,但这只是一个初步的了解,关于它还会有更深入的应用。后面在代码中遇到再看吧。
相关文章推荐
- USACO 2009 Feb Gold 3.Revamping Trails
- editor does not contain a main type 解决方法
- codeforces Gym 100338H High Speed Trains (递推,高精度)
- 具有 Button 风格的 Panel(覆盖TCustomPanel的Paint函数,用到了ThemeServices)
- HDOJ1021题 Fibonacci Again 应用求模公式
- HDOJ1021题 Fibonacci Again 应用求模公式
- Container With Most Water
- Netty之BIO(同步阻塞IO)、PIO(伪异步阻塞IO)、NIO(异步非阻塞IO)、AIO(异步非阻塞IO)、Netty
- poj 1273 Drainage Ditches
- hdu 4300 Clairewd’s message(kmp/扩展kmp)
- hdu 5407 CRB and Candies(组合数+最小公倍数+素数表+逆元)2015 Multi-University Training Contest 10
- vs2010下配置CUDA出现kernel launch failed问题,内核无效
- Windows Server 2012如何部署Domain Controller
- WinMain与wWinMain,win32的字符集问题
- RAID
- hdu 3635 Dragon Balls(加权并查集)2010 ACM-ICPC Multi-University Training Contest(19)
- INSTALL_FAILED_OLDER_SDK
- INSTALL_FAILED_INSUFFICIENT_STORAGE
- 画布Canvas与画笔Paint
- retain,copy,assign,strong,weak,autorelease,nonatomic,atomic等得使用及区别