C - 主函数



C 语言中的 main() 函数

C 语言中的 main() 函数是任何程序的入口点。程序执行从 main() 函数 开始。它旨在执行程序的主要处理并清理程序分配的任何资源。在 C 代码中,可能存在任意数量的函数,但必须有一个 main() 函数。无论它在代码中的位置如何,它都是第一个执行的函数。

语法

以下是 C 语言main() 函数的语法:

int main(){
   //one or more statements;
   return 0;
}

语法解释

作为其语法的一部分,函数有一个名称,该名称遵循形成标识符的规则(以字母或下划线开头,并且包含字母、数字或下划线)。名称后面跟着一个括号。通常,main() 函数定义为没有参数,尽管它可能有 argv 和 argv 参数来接收来自命令行的值。

main() 函数的有效/不同签名

main() 函数的签名(原型)如下:

int main() {
   . .
   return 0;
}

或者

int main(void){
   . .
   return 0;
}

或者

int main(int argc, char *argv[]){
   . .
   return 0;
}

main() 函数示例

以下示例演示了 main() 函数

#include <stdio.h>

int main() {
  // Write code from here
  printf("Hello World");
  return 0;
}

关于 main() 函数的重要事项

  • C 程序必须具有 main() 函数。
  • main 不是 C 关键字
    它被归类为 用户定义函数,因为它的主体不是预先确定的,它取决于程序的处理逻辑。
    按照惯例,int 是 main() 的返回类型。main() 函数体中的最后一个语句返回 0,以指示函数已成功执行。任何非零返回值都表示失败。
  • 一些旧的 C 编译器允许您使用 void 返回类型定义 main() 函数。
  • 但是,这被认为是非标准的,不建议使用。
  • 与其他函数相比,main() 函数
    • 不能声明为内联。
    • 不能声明为静态。
    • 不能获取其地址。
    • 不能从您的程序中调用。

main() 在 C 中是如何工作的?

程序的执行从 main() 函数开始,因为它是程序的入口点,它开始执行其内部编写的语句。源程序中的其他函数被定义为执行某些任务。main 函数可以调用任何这些函数。当 main 调用另一个函数时,它将执行控制权传递给该函数,并选择性地传递必要的参数数量和类型,以便执行从被调用函数中的第一个语句开始。当执行 return 语句或到达函数末尾时,被调用函数将控制权返回给 main。请注意,当其返回类型为 int 时,return 语句隐式地存在于最后一个语句中。

程序通常在从 main 返回或到达 main 的末尾时停止执行,尽管由于各种原因,它可能在程序中的其他点终止。例如,当检测到某些错误条件时,您可能希望强制终止程序。为此,您可以使用 exit 函数。

在 main() 函数中使用 exit()

C exit() 函数 是一个标准库函数,用于终止调用进程。使用 exit(0) 表示没有错误,使用 exit(1) 表示程序由于遇到错误而退出。

示例

#include <stdio.h>
#include <stdlib.h>

int add(int, int);

int main (){
   int i;
   for ( i = 1; i<=5; i++){

      if ( i == 3 ){
         printf  (" \n exiting ..");
         exit(0);
      }
      else

      printf  (" \n Number is %d", i);
   }

   return 0;
}

输出

Number is 1
Number is 2
exiting ..

带 main() 的命令行参数

通常,main() 函数定义为没有任何参数。但是,您可以使用参数定义 main() 以使其接受来自命令行的值。在这种类型的用法中,main() 函数定义如下:

语法

以下是带有 命令行参数 的 main() 函数的语法

int main(int argc, char *argv[]){
   . . 
   return 0;
}

参数定义

参数定义如下:

argc - 第一个参数是一个整数,包含 argv 中后续参数的计数。argc 参数始终大于或等于 1。

argv - 第二个参数是一个以 null 结尾的字符串数组,表示用户为程序输入的命令行参数。按照惯例,argv[0] 是调用程序的命令。argv[1] 是第一个命令行参数。来自命令行的最后一个参数是 argv[argc - 1],而 argv[argc] 始终为 NULL。

示例:使用带命令行参数的 main() 函数

考虑以下程序以了解命令行参数。

#include <stdio.h>
#include <stdlib.h>

int add(int, int);

int main (int argc, char *argv[]){
   int x, y, z;

   if (argc<3){
      printf("insufficient arguments");
   }
   else{
      x = atoi(argv[1]);
      y = atoi(argv[2]);
      z = x+y;
      printf("addition : %d", z);
   }
   return 0;
}

只需编译并构建程序为 test.c,不要从您编辑和编译的 IDE 中运行。转到命令提示符并按如下方式运行程序:

C:\Users\mlath>test 10 20
addition : 30

在本章中,我们学习了在 C 中定义 main() 函数的重要性及其语法。任何 C 程序都必须具有 main() 函数。按照惯例,它应该返回 0 以指示执行成功。您还可以为 main() 函数定义参数,它们可以从命令行传递。

广告