入门系列:基础认知——main函数参数说明

说明
  本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
  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
...
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值