0825每日一練

2021-10-23 19:59:01 字數 1559 閱讀 1091

答:main函式的返回值用於說明程式的退出狀態。如果返回0,則代表程式正常退出。返回其它數字的含義則由系統決定。通常,返回非零代表程式異常退出。

經常使用的void main( )其實是錯誤的。c/c++ 中從來沒有定義過void main( ) 。c++ 之父 bjarne stroustrup 在他的主頁上的 faq 中明確地寫著 「the definition void main( ) is not and never has been c++, nor has it even been c.」。

這可能是因為在c和c++ 中,不接收任何引數也不返回任何資訊的函式原型為「void foo(void);」。可能正是因為這個,所以很多人都誤認為如果不需要程式返回值時可以把main函式定義成void main(void) 。然而這是錯誤的!main函式的返回值應該定義為 int 型別,c和c++ 標準中都是這樣規定的。雖然在一些編譯器中,void main() 可以通過編譯,但並非所有編譯器都支援 void main() ,因為標準中從來沒有定義過 void main 。g++3.2 中如果 main 函式的返回值不是 int 型別,就根本通不過編譯。而 gcc3.2 則會發出警告。所以,為了程式擁有很好的可移植性,一定要用int main ()。

在最新的 c99 標準中,只有以下兩種定義方式是正確的:

int main( void )

int main( int argc, char ar** )

若不需要從命令列中獲取引數,就使用int main(void) ;否則的話,就用int main( int argc, char ar** )。main 函式的返回值型別必須是 int ,這樣返回值才能傳遞給程式的呼叫者(如作業系統),等同於 exit(0),來判斷函式的執行結果。

為main函式傳參時,可選的main函式原形為:

int main(int argc , char ar**,char envp);

引數說明:

② 、第乙個引數argc表示的是傳入引數的個數

②、第二個引數char ar**,是字串陣列,用來存放指向的字串引數的指標陣列,每乙個元素指向乙個引數。各成員含義如下:

ar**[0]:指向程式執行的全路徑名

ar**[1]:指向執行程式名後的第乙個字串 ,表示真正傳入的第乙個引數

ar**[2]:指向執行程式名後的第二個字串 ,表示傳入的第二個引數

ar**[n]:指向執行程式名後的第n個字串 ,表示傳入的第n個引數

規定:ar**[argc]為null ,表示引數的結尾。

③、第三個引數char* envp,也是乙個字串陣列,主要是儲存這使用者環境中的變數字串,以null結束。envp的每乙個元素都包含envvar=value形式的字串,其中envvar為環境變數,value為其對應的值。envp一旦傳入,它就只是單純的字串陣列而已,不會隨著程式動態設定發生改變。可以使用putenv函式實時修改環境變數,也能使用getenv實時檢視環境變數,但是envp本身不會發生改變;平時使用到的比較少。

注意:main函式的引數char* ar**和char* envp表示的是字串陣列,書寫形式不止char* ar**這一種,相應的ar**和char** ar**均可。

每日一練4

員工表emp 員工編號eid,姓名ename,工作職位title,僱傭日期hiretime,工資salary,獎金bonus,部門depart 部門表dept 部門編號did,名稱dname,部門領導leader 員工資料 1001,張三 銷售 1999 12 1 3000.0,1100.0,102...

每日一練25

請描述 mysql 從安裝到配置的全部詳細過程 確保一台新電腦可以順利使用 mysql mysql安裝嚮導啟動,按 next 繼續 選擇安裝型別,有 typical 預設 complete 完全 custom 使用者自定義 三個選項,我們選擇 custom 有更多的選項,也方便熟悉安裝過程 選擇配置...

每日一練 13

談談你對ajax 的理解?概念 特點 作用 select 教師號,sum case when 星期號 1 and 是否有課 有 then 1 else 0 end as 星期一,sum case when 星期號 2 and 是否有課 有 then 1 else 0 end as 星期二,sum c...