Files
hustoj/web/cppreference-zh/chmhelp/c-language-main_function.html
2025-08-01 12:57:54 +08:00

160 lines
16 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>&#20027;&#20989;&#25968;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_language_main_function skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#20027;&#20989;&#25968;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="c.html">c</a>&lrm; | <a href="c-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#27599;&#20010;&#35201;&#22312;&#23487;&#20027;&#29615;&#22659;&#36816;&#34892;&#30340;&#32534;&#30721; C &#31243;&#24207;&#37117;&#21547;&#26377;&#31216;&#20316; <code><b>main</b></code> &#30340;&#20989;&#25968;&#23450;&#20041;&#65288;&#38750;&#21407;&#22411;&#65289;&#65292;&#23427;&#26159;&#20989;&#25968;&#30340;&#21463;&#25351;&#23450;&#36215;&#22987;&#28857;&#12290;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> <code><b>main</b></code> <code><b>(void)</b></code> <code><b>{</b></code> <span class="t-spar">body</span> <code><b>}</b></code></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> <code><b>main</b></code> <code><b>(</b></code><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> <span class="t-spar">argc</span><code><b>,</b></code> <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span></span></span> <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">*</span></span></span><span class="t-spar">argv</span><span class="t-c"><span class="mw-geshi c source-c"><span class="br0">[</span><span class="br0">]</span></span></span><code><b>)</b></code> <code><b>{</b></code> <span class="t-spar">body</span> <code><b>}</b></code></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="coMULTI">/* &#20854;&#20182;&#23454;&#29616;&#23450;&#20041;&#31614;&#21517; */</span></span></span> <span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></td>
<td>(3)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">&#21442;&#25968;</span></h3>
<table class="t-par-begin">
<tr class="t-par">
<td>argc</td>
<td>-</td>
<td>&#20195;&#34920;&#31243;&#24207;&#25152;&#36816;&#34892;&#30340;&#29615;&#22659;&#20256;&#36882;&#32473;&#31243;&#24207;&#30340;&#21442;&#25968;&#25968;&#37327;&#12290;</td>
</tr>
<tr class="t-par">
<td>argv</td>
<td>-</td>
<td>&#25351;&#21521; <span class="t-c"><span class="mw-geshi c source-c">argc <span class="sy2">+</span> <span class="nu0">1</span></span></span> &#20010;&#25351;&#38024;&#30340;&#25968;&#32452;&#30340;&#39318;&#20803;&#32032;&#30340;&#25351;&#38024;&#12290;&#25968;&#32452;&#26411;&#20803;&#32032;&#20026;&#31354;&#25351;&#38024;&#65292;&#32780;&#33509;&#21069;&#38754;&#26377;&#20803;&#32032;&#65292;&#21017;&#23427;&#20204;&#25351;&#21521;&#34920;&#31034;&#20174;&#23487;&#20027;&#29615;&#22659;&#20256;&#36882;&#32473;&#31243;&#24207;&#30340;&#21442;&#25968;&#30340;&#23383;&#31526;&#20018;&#12290;&#33509; <span class="t-c"><span class="mw-geshi c source-c">argv<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span></span></span> &#19981;&#26159;&#31354;&#25351;&#38024;&#65288;&#25110;&#31561;&#20215;&#22320; <span class="t-c"><span class="mw-geshi c source-c">argc</span></span> &gt; 0 &#65289;&#65292;&#21017;&#23427;&#25351;&#21521;&#34920;&#31034;&#31243;&#24207;&#21517;&#30340;&#23383;&#31526;&#20018;&#12290;&#33509;&#31243;&#24207;&#21517;&#20174;&#23487;&#20027;&#29615;&#22659;&#19981;&#21487;&#29992;&#21017;&#35813;&#23383;&#31526;&#20018;&#20026;&#31354;&#12290;</td>
</tr>
</table>
<p>&#21517;&#31216; <code>argc</code> &#21644; <code>argv</code> &#34920;&#31034;&#21442;&#25968;&#35745;&#25968;&#21644;&#21442;&#25968;&#21521;&#37327;&#12290;&#21442;&#25968;&#30340;&#21517;&#31216;&#21644;&#31867;&#22411;&#34920;&#31034;&#26159;&#20219;&#24847;&#30340;&#65306; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">int</span> ac, <span class="kw4">char</span><span class="sy2">**</span> av<span class="br0">)</span></span></span> &#21516;&#26679;&#21512;&#27861;&#12290;</p>
<p><code>main</code> &#30340;&#24120;&#35265;&#23454;&#29616;&#23450;&#20041;&#24418;&#24335;&#26159; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">int</span> argc, <span class="kw4">char</span> <span class="sy2">*</span>argv<span class="br0">[</span><span class="br0">]</span>, <span class="kw4">char</span> <span class="sy2">*</span>envp<span class="br0">[</span><span class="br0">]</span><span class="br0">)</span></span></span> &#65292;&#20854;&#20013;&#31532;&#19977;&#21442;&#25968;&#31867;&#22411;&#20026; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">**</span></span></span> &#65292;&#25351;&#21521;<a rel="nofollow" class="external text" href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html">&#25351;&#21521;<i>&#25191;&#34892;&#29615;&#22659;&#21464;&#37327;</i>&#30340;&#25351;&#38024;&#25968;&#32452;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">&#36820;&#22238;&#20540;</span></h3>
<p>&#33509;&#20351;&#29992;&#36820;&#22238;&#35821;&#21477;&#65292;&#21017;&#36820;&#22238;&#20540;&#20250;&#29992;&#20316;&#38544;&#24335;&#35843;&#29992; <span class="t-lc"><a href="c-program-exit.html">exit()</a></span> &#30340;&#21442;&#25968;&#65288;&#32454;&#33410;&#35265;&#19979;&#65289;&#12290;&#20540;&#38646;&#21644; <span class="t-lc"><a href="c-program-EXIT_status.html">EXIT_SUCCESS</a></span> &#25351;&#31034;&#25104;&#21151;&#32456;&#27490;&#65292;&#20540; <span class="t-lc"><a href="c-program-EXIT_status.html">EXIT_FAILURE</a></span> &#25351;&#31034;&#19981;&#25104;&#21151;&#32456;&#27490;&#12290;</p>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p>&#22312;&#31243;&#24207;&#21551;&#21160;&#26102;&#65292;&#21021;&#22987;&#21270;&#25152;&#26377;&#38745;&#24577;&#23384;&#20648;&#26399;&#23545;&#35937;&#21518;&#35843;&#29992; <code>main</code> &#20989;&#25968;&#12290;&#23427;&#25351;&#26126;&#25191;&#34892;&#20110;<i>&#23487;&#20027;</i>&#29615;&#22659;&#65288;&#21363;&#22312;&#25805;&#20316;&#31995;&#32479;&#20013;&#65289;&#30340;&#31243;&#24207;&#20837;&#21475;&#28857;&#12290;&#20219;&#20309;<i>&#29420;&#31435;</i>&#31243;&#24207;&#65288;&#24341;&#23548;&#31243;&#24207;&#12289;&#25805;&#20316;&#31995;&#32479;&#26680;&#24515;&#31561;&#65289;&#30340;&#20837;&#21475;&#28857;&#30340;&#21517;&#31216;&#21644;&#31867;&#22411;&#26159;&#23454;&#29616;&#23450;&#20041;&#30340;&#12290;</p>
<p>&#20027;&#20989;&#25968;&#30340;&#21452;&#21442;&#25968;&#24418;&#24335;&#20801;&#35768;&#20174;&#25191;&#34892;&#29615;&#22659;&#20256;&#36882;&#20219;&#24847;&#30340;&#22810;&#23383;&#33410;&#23383;&#31526;&#20018;&#65288;&#24120;&#31216;&#20316;<i>&#21629;&#20196;&#34892;&#21442;&#25968;</i>&#65289;&#12290;&#25351;&#38024; <code>argv[1] .. argv[argc-1]</code> &#25351;&#21521;&#27599;&#20010;&#36825;&#20123;&#23383;&#31526;&#20018;&#30340;&#39318;&#23383;&#31526;&#12290; <code>argv[0]</code> &#25351;&#21521;&#20195;&#34920;&#29992;&#20110;&#35843;&#29992;&#31243;&#24207;&#33258;&#36523;&#30340;&#21517;&#31216;&#30340;&#65292;&#31354;&#32456;&#27490;&#22810;&#23383;&#33410;&#23383;&#31526;&#20018;&#30340;&#39318;&#23383;&#31526;&#65288;&#25110;&#32773;&#33509;&#23487;&#20027;&#29615;&#22659;&#19981;&#25903;&#25345;&#27492;&#20570;&#27861;&#65292;&#21017;&#20445;&#35777; <code>argv[0][0]</code> &#20026;&#38646;&#65289;&#12290;</p>
<p>&#33509;&#23487;&#20027;&#29615;&#22659;&#19981;&#33021;&#19968;&#21516;&#25552;&#20379;&#22823;&#20889;&#21644;&#23567;&#20889;&#23383;&#27597;&#65292;&#21017;&#36716;&#25442;&#21629;&#20196;&#34892;&#21442;&#25968;&#20026;&#23567;&#20889;&#12290;</p>
<p>&#23383;&#31526;&#20018;&#21487;&#20462;&#25913;&#65292;&#32780;&#19988;&#20219;&#20309;&#20462;&#25913;&#20250;&#30041;&#23384;&#21040;&#31243;&#24207;&#32456;&#27490;&#26102;&#65292;&#23613;&#31649;&#36825;&#20123;&#20462;&#25913;&#19981;&#20250;&#20256;&#25773;&#22238;&#23487;&#20027;&#29615;&#22659;&#65306;&#20363;&#22914;&#33021;&#20197; <span class="t-lc"><a href="c-string-byte-strtok.html">strtok</a></span> &#20351;&#29992;&#23427;&#20204;&#12290;</p>
<p><code>argv</code> &#25152;&#25351;&#30340;&#25968;&#32452;&#22823;&#23567;&#33267;&#23569;&#26159; <code>argc+1</code> &#65292;&#24182;&#20445;&#35777;&#26411;&#20803;&#32032; <code>argv[argc]</code> &#20026;&#31354;&#25351;&#38024;&#12290;</p>
<p><code>main</code> &#20989;&#25968;&#25317;&#26377;&#20960;&#20010;&#29305;&#27530;&#23646;&#24615;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> &#31243;&#24207;&#19981;&#33021;&#25552;&#20379;&#27492;&#20989;&#25968;&#30340;&#21407;&#22411;</div>
<div class="t-li1"><span class="t-li">2)</span> &#33509;&#20027;&#20989;&#25968;&#30340;&#36820;&#22238;&#31867;&#22411;&#19982; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> <a href="c-language-types.html#.E5.85.BC.E5.AE.B9.E7.B1.BB.E5.9E.8B">&#20860;&#23481;</a>&#65292;&#21017;&#20174;&#23545; <code>main</code> &#30340;&#21021;&#27425;&#35843;&#29992;&#65288;&#20294;&#19981;&#26159;&#20219;&#20309;&#21518;&#32487;&#12289;&#36882;&#24402;&#35843;&#29992;&#65289;&#36820;&#22238;&#65292;&#31561;&#20215;&#20110;&#20197;&#20027;&#20989;&#25968;&#36820;&#22238;&#20540;&#20026;&#21442;&#25968;&#25191;&#34892; <span class="t-lc"><a href="c-program-exit.html">exit</a></span> &#20989;&#25968;&#65288;&#23558;&#35843;&#29992; <span class="t-lc"><a href="c-program-atexit.html">atexit</a></span> &#25152;&#27880;&#20876;&#30340;&#20989;&#25968;&#65292;&#20914;&#20837;&#24182;&#20851;&#38381;&#25152;&#26377;&#27969;&#65292;&#21024;&#38500; <span class="t-lc"><a href="c-io-tmpfile.html">tmpfile</a></span> &#25152;&#21019;&#24314;&#30340;&#25991;&#20214;&#65292;&#24182;&#36820;&#36824;&#25511;&#21046;&#32473;&#25191;&#34892;&#29615;&#22659;&#65289;&#12290;</div>
<div class="t-li1"><span class="t-li">3)</span>
<table class="t-rev-begin">
<tr class="t-rev t-until-c99">
<td>
<p>&#33509; main &#20989;&#25968;&#25191;&#34892;&#19981;&#25351;&#23450;&#20540;&#30340; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw1">return</span></span></span> &#65292;&#25110;&#21516;&#26679;&#22320;&#26410;&#25191;&#34892; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw1">return</span></span></span> &#23601;&#25269;&#36798;&#32467;&#23614;&#30340; <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">}</span></span></span> &#65292;&#21017;&#36820;&#22238;&#32473;&#23487;&#20027;&#29615;&#22659;&#30340;&#32456;&#27490;&#29366;&#24577;&#26410;&#23450;&#20041;&#12290;</p>
</td>
<td><span class="t-mark-rev t-until-c99">(C99 &#21069;)</span></td>
</tr>
<tr class="t-rev t-since-c99">
<td>
<p>&#33509; main &#20989;&#25968;&#30340;&#36820;&#22238;&#31867;&#22411;&#19982; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> &#19981;<a href="c-language-types.html#.E5.85.BC.E5.AE.B9.E7.B1.BB.E5.9E.8B">&#20860;&#23481;</a>&#65288;&#22914; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">void</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span></span></span> &#65289;&#65292;&#21017;&#36820;&#22238;&#32473;&#23487;&#20027;&#29615;&#22659;&#30340;&#20540;&#26410;&#25351;&#23450;&#12290;&#33509;&#36820;&#22238;&#31867;&#22411;&#19982; int &#20860;&#23481;&#19988;&#25511;&#21046;&#25269;&#36798;&#32467;&#23614;&#30340; <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">}</span></span></span> &#65292;&#21017;&#36820;&#22238;&#32473;&#25191;&#34892;&#29615;&#22659;&#30340;&#20540;&#19982;&#22914;&#21516;&#25191;&#34892; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span></span></span> &#30340;&#32467;&#26524;&#30456;&#21516;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></td>
</tr>
</table>
</div>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<p>&#28436;&#31034;&#22914;&#20309;&#21578;&#30693;&#31243;&#24207;&#20854;&#23547;&#25214;&#36755;&#20837;&#22788;&#21450;&#20889;&#32467;&#26524;&#22788;&#12290; &#35843;&#29992;&#65306; ./a.out indatafile outdatafile</p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="co2">#include &lt;stdio.h&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">int</span> argc, <span class="kw4">char</span> <span class="sy2">*</span>argv<span class="br0">[</span><span class="br0">]</span><span class="br0">)</span>
<span class="br0">{</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;argc = %d<span class="es1">\n</span>&quot;</span>, argc<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> ndx <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> ndx <span class="sy3">!</span><span class="sy1">=</span> argc<span class="sy4">;</span> <span class="sy2">++</span>ndx<span class="br0">)</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;argv[%d] --&gt; %s<span class="es1">\n</span>&quot;</span>, ndx,argv<span class="br0">[</span>ndx<span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;argv[argc] = %p<span class="es1">\n</span>&quot;</span>, <span class="br0">(</span><span class="kw4">void</span><span class="sy2">*</span><span class="br0">)</span>argv<span class="br0">[</span>argc<span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">argc = 3
argv[0] --&gt; ./a.out
argv[1] --&gt; indatafile
argv[2] --&gt; outdatafile
argv[argc] = (nil)</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">&#24341;&#29992;</span></h3>
<div class="t-ref-std-11">
<ul>
<li>C11 &#26631;&#20934;&#65288;ISO/IEC 9899:2011&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>5.1.2.2.1 Program startup (p: 13)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c99">
<ul>
<li>C99 &#26631;&#20934;&#65288;ISO/IEC 9899:1999&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>5.1.2.2.1 Program startup (p: 12)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c89">
<ul>
<li>C89/C90 &#26631;&#20934;&#65288;ISO/IEC 9899:1990&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>5.1.2.2 Hosted environment</li>
</ul>
</dd>
</dl>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
</div>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>