求助C语言大佬:C语言的main函数参数问题

最近在敲代码的过程中,突发奇想,产生了一个疑问:

        为什么main函数可以任由我们定义:可以接收一个参数、两个参数、三个参数都接接收,或者可以不接收?这是如何实现的

int main(){
    retrun 0;
}
int main (int argc){
    return 0;
}
int main(int argc, char* args[]) {
    return 0;
}
int main(int argc, char* args[],char* envs[]) {
    return 0;
}

这几种main函数的定义都是可以的,但是我在vs中调试的时候,发现main函数的上层函数实是这样调用的:

static int __cdecl invoke_main()
{
    return main(__argc, __argv, _get_initial_narrow_environment());
}

incoke_main函数中在调用main函数的过程中是有传递参数的,

求助C语言大佬:C语言的main函数参数问题_第1张图片

 我也在vs中做了一个相似的实验,发现是不行的,

在闲暇时候,我上往找过一些资料,但是都没有对这个问题的相关解答,我甚至去国外的网站,希望能找到答案,但是得到的解答也是一知半解,也可能是我对问题的关键词把握不对,也可能我没有找到相关资料,

希望有知道的大佬,能解答一下我的疑惑

你可能感兴趣的:(c语言,开发语言)