C++编程法则365天一天一条(1)关于main函数你了解多少

main() 函数是C/C++程序的入口函数,整个程序从此处开始执行,当然我们可以通过链接脚本修改入口函数,对于一个可执行程序,main函数必须存在且唯一,其定义如下:

版本1int main()
{
    
    
    // 程序代码
    return 0;
}

版本2
int main(int argc, char* argv[])
{
    
    
    // 程序代码
    return 0;
}

其中:

  • int 表示函数返回值的类型,表示程序结束时返回一个整型值。
  • main 是函数名,表示主函数,程序从这个函数开始执行。
  • int argc 表示命令行参数的个数,一般至少为1(即可执行文件的名称),可以为空。
  • char *argv[] 是一个字符串指针数组,每个元素指向一个命令行参数的字符串,第一个位置通常是可执行程序的全路径。

argv数组的长度通常是argc + 1argv[argc]的值为NULL。

  • 返回语句可以省略

注意,在 C++ 中,也可以不写返回语句来结束 main() 函数,例如:

int main(int argc, char* argv[])
{
    
    
    // 程序代码
}

当没有返回语句时,默认会在主函数结束时返回值 0。

  • main函数可以当普通函数调用

  • 在执行 main() 函数中的 return 语句(或者在主函数结束时隐式返回)时,相当于正常离开该函数,并且会销毁所有自动存储期的对象,然后将return 语句的返回值传递给 std::exit调用。std::exit 然后会销毁所有静态对象并终止程序。

    简单来说,return 语句让程序从main() 函数中正常离开,并返回一个整型值作为程序的退出状态,同时会执行自动对象的析构函数。如果 main() 函数没有定义返回值,等价于 return 0; 如果通过 std::exit 函数退出程序,则会立即停止程序的运行并退出。

#include <string>
#include <iostream>
 
class Fuck {
    
    
  public:
    std::string str;
    ~Fuck() {
    
    
      std::cout << str << "\n";
  }
};


static Fuck a{
    
    "a"};

int main() {
    
    
    Fuck b{
    
    "b"};
    exit(1);   
}

对于上面这个代码,只会打印a。

  • 不能对main函数的地址进行赋值。

猜你喜欢

转载自blog.csdn.net/HandsomeHong/article/details/130788170