最简单的C语言程序一例


声明:本人知识有限,文章可能有误或不全面,望指正并讨论!

最简单的C语言程序,应该就是一个main函数,而main里什么也不做了。

如下:

C文件main.c:

int main()
{
    return 0;
}

在 unix/linux下编译,后生成可执行程序main,并执行main:

# cc -Wall -o main main.c
# ./main
#

程序无输出。

这是一个最简单的C语言程序了,但虽然是最简单,也有值得注意的地方。

为什么会是main函数?

因为main函数是链接生成可执行程序的入口,即程序的代码运行的入口。这是被定义的。而main函数的原型可以有三个:

int main();
int main(int argc, char *argv[]);
int main(int argc, char **argv);

第一个main函数忽略命令行参数;

第二个main与第三个main是等价的,他们接受命令行参数。

一个可执行程序只有一个入口,那么正常情况下main函数也只能有一个。

但也有不正常的情况,那就是把main函数声明为static,但此时编译器会发出警告。这样声明的main函数就失去了作为程序入口的特性。而此时的static main函数不能和作为程序入口的main放在同一个文件,而需要把static main放到另一个C文件,从而使static main仅在文件内访问。

main函数只能有一个,那么main函数是不是只能执行一次。答案是否定的,main函数也是可以执行多次,只要代码中显示调用main函数,那么main函数也是可以执行的。如下面程序:

#include <stdio.h>
 
int main(int argc, char *argv[])
{
 
    if (argc >0) {
        main(argc - 1, argv);
        printf("%s\n", argv[argc - 1]);
    }
 
    return 0;
}

为什么没有include头文件?

因为最开始的main函数中,没有使用到一些编译或链接时所不知道的标识符,所以不需要include其他头文件。

C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码

读C++ Primer 之构造函数陷阱

读C++ Primer 之智能指针

读C++ Primer 之句柄类

将C语言梳理一下,分布在以下10个章节中:

  1. Linux-C成长之路(一):Linux下C编程概要
  2. Linux-C成长之路(二):基本数据类型
  3. Linux-C成长之路(三):基本IO函数操作
  4. Linux-C成长之路(四):运算符
  5. Linux-C成长之路(五):控制流
  6. Linux-C成长之路(六):函数要义
  7. Linux-C成长之路(七):数组与指针
  8. Linux-C成长之路(八):存储类,动态内存
  9. Linux-C成长之路(九):复合数据类型
  10. Linux-C成长之路(十):其他高级议题

本文永久更新链接地址:

相关内容