main函数
一、概念
main函数,又称主函数,是程序执行的起点,也是终点。有且仅有一个。
C语言规定main函数函数形参有两个:
①argc:参数计数器,整型变量 ,表示参数的个数.
②argv:参数数组本身,指向字符串的指针数组,表示存放参数的具体内容.【参数表】
【注意】:argv[0]保存自身运行的目录路径和程序名,从argv[1]开始才是指向对应的参数
故main函数一般写为:
int main (int argc,char *argv[]){…}
int main (int argc,char **argv){…}
二、实践
#include<stdio.h>
int main(int argc,char**argv)
{
int i;
printf("argc = %d\n",argc);
for(i = 0 ; i < argc ;i++){
printf("argv[%d]=%s\n",i,argv[i]);
}
return 0;
}
①编译程序:gcc main.c -o main
②运行程序:./main,可得:
argc = 1
argv[0]=./main
③运行程序并添加参数:./main para1 para2 para3
argc = 4 //表示有四个参数
argv[0]=./main
argv[1]=para1
argv[2]=para2
argv[3]=para3
三、main函数第三个参数,一般不使用
每个程序都会接收到一张环境表,也是一个字符指针数组(包含null结束)。
这也是main函数的第三个参数:envp环境指针。(格式为:name = value)
具体可查看以下示例及结果:
#include<stdio.h>
int main(int argc,char*argv[],char *envp[])
{
int i;
printf("argc = %d\n", argc);
for(i = 0 ; i < argc ;i++)
{
printf("argv[%d]=%s\n",i,argv[i]);
}
for(i = 0 ; envp != NULL ; i++)
{
printf("%d %s\n",i,envp[i]);
}
return 0;
}
argc = 1
argv[0]=./test
0 SHELL=/bin/bash
1 SESSION_MANAGER=local/computer:@/tmp/.ICE-unix/1738,unix/computer:/tmp/.ICE-unix/1738
2 QT_ACCESSIBILITY=1
3 COLORTERM=truecolor
4 XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
5 XDG_MENU_PREFIX=gnome-
6 GNOME_DESKTOP_SESSION_ID=this-is-deprecated
7 LC_ADDRESS=zh_CN.UTF-8
四、环境变量
#include<stdio.h>
int main(int argc,char*argv[])
{
char **ptr;
extern char **environ;
for(ptr = environ ; *ptr != 0 ; ptr++)
{
printf("%s\n",*ptr);
}
return
$: gcc test.c -o test
$: ./test
SHELL=/bin/bash
...