说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
main函数的参数详解
main函数的的两个参数
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 0;
}
$: gcc test.c -o test
$: ./test
SHELL=/bin/bash
...