• 学点 C 语言(41): 函数 关于 main 函数



    main 函数是 C 程序的入口点, 不可或缺, 不可重复;

    main 函数应返回一个整数值给操作系统, 返回 0 表示正常结束.

    前面使用的 main 函数都是无参数的: int main(void);

    main 可以有两个参数: int main(int argc, char *argv[]);
    第一个是自动获取的参数数目(+1), 第二个是参数列表(字符串列表);
    这一般用于控制台或 dos 下,
    在 Windows 下我们双击文件名打开文件时, 该文件名(包括路径)也是通过这些参数传递的.

    1. 获取 main 函数第一个参数的默认值:

    它会是 1; 我们并没有给它参数呀? 原来它是把文件名当作第一个参数的.
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
        printf("%d\n", argc); /* 1 */
        getchar();
        return 0;
    }
    

    2. 获取第一个参数(也就是文件名):
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
        printf("%s\n", argv[0]);
        getchar();
        return 0;
    }
    

    3. 给 main 函数建立并获取参数列表:

    如果是在控制台或 dos 下, 在程序名后面输入就是了, 现在呢?
    C++Builder 菜单 -> Run -> Parameters... -> 在 Parameters 输入测试参数(譬如: 11 22 33), 用空格隔开.
    此对话框也可从 Project -> Project Options -> Debuger 进入.
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
        int i;
        for (i = 1; i < argc; i++) {
            printf("%s\n", argv[i]);    
        }
    
        printf("---\n");
    
        while (--argc) {
            printf("%s\n", argv[argc]);    
        }
        
        getchar();
        return 0;
    }
    

    4. 假如需要其他类型的参数:

    main 的参数都是字符串的(或者说是字符指针的), 要使用其他类型的参数, 譬如 int、double 等, 只能转换.
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char* argv[])
    {
        int I;
        long L;
        double D;
        
        I = atoi(argv[1]);  /* 假定至少指定了一个参数 */
        L = atol(argv[1]);
        D = atof(argv[1]);
    
        printf("%d, %ld, %g\n", I, L, D);
        
        getchar();
        return 0;
    }
    

    5. C++Builder 2009 中的 main 函数:

    //标准的 main 函数:
    int main(int argc, char* argv[])
    {
        return 0;
    }
    
    //C++Builder 2009 中的 main 函数:
    int _tmain(int argc, _TCHAR* argv[])
    {
        return 0;
    }
    
    /*
    _tmain 是个 define, 在 tchar.h 中这样定义: #define _tmain main
    程序在预处理阶段将会把它替换为: main
    
    _TCHAR 是重命名的 char 类型, 在 tchar.h 中这样定义: typedef char _TCHAR;
    
    看来要想按照 C++Builder 2009 给的默认代码使用, 是离不开 tchar.h 的.
    
    C++Builder 2009 为什么要这样? 肯定有理由, 可我不知道.
    */
    

  • 相关阅读:
    verilog RTL编程实践之四
    TB平台搭建之二
    hdu3466 Proud Merchants
    poj2411 Mondriaan's Dream (用1*2的矩形铺)
    zoj3471 Most Powerful
    poj2923 Relocation
    hdu3001 Travelling
    poj3311 Hie with the Pie
    poj1185 炮兵阵地
    poj3254 Corn Fields
  • 原文地址:https://www.cnblogs.com/del/p/1348072.html
Copyright © 2020-2023  润新知