C 之 main函式的呼叫與被呼叫

2021-07-05 01:49:28 字數 1351 閱讀 9120

main函式能呼叫自身嗎?

其他函式能呼叫main函式麼?

下面先看一段有意思的程式,乙個簡潔有趣的列印菱形的程式。

[cpp]view plain

copy

intline = 1;  

intmain()    

效果圖如下:

首先說一下」%*s」的用法,即*是用乙個int引數來代替,比如:

printf(「%*s\n」, 5, 「def」);就相當於printf(「%5s\n」, 「def」);指定了字串輸出的寬度。這個用法平時見得不多,可以了解下。

另外:有人對這一行「*******」+2*(line>4? line-4:4-line)感到疑惑,其實認真看一下,就是乙個字串指標加上乙個int整數,也就是指標的平移了。比如line=1第一行時,2*(line>4? line-4:4-line)即為6,也就是7個星號的字串指標平移6個,所以輸出乙個星號了。最後這個程式用到了main函式的遞迴呼叫,注意一定要寫上退出條件,否則就無限迴圈了。

這裡分享下*在scanf中的作用是跳過...

例如:scanf("%*d %*d %d",&n);

printf("%d",n);

這樣當輸入 1 2 3的時候,只會儲存n,正常列印3

再囉嗦一下*在printf("%*d",width,n);這樣因為是*d 的順序,所以width實際表達的是 n的輸出寬度,n才是要輸出的內容。

例如:int n=3;

scanf("%d",width);

printf("%*d",width,n);

下面看一下其他函式呼叫main的例子,列印(空格):

[cpp]view plain

copy

intline = 1;  

intfunc();  

intmain()  

;  int

func()  

return

0;  

}  

執行結果如下:

事實證明main函式只是乙個程式的入口,也相當於乙個普通的函式,也能被自身呼叫,也能被其他函式呼叫。

這和一般的函式之間互相呼叫的概念是一樣的。不過需要注意的是,main函式不管是自身的呼叫還是被其他函式呼叫,都要設定函式終止的條件,這個遞迴函式有點相似,不然就會陷入死迴圈。

C 面試之main函式之後的呼叫

main函式代表程序的主線程。程式開始執行時,系統為程式建立乙個程序,main函式其實並不是首先被呼叫的函式,而是作業系統呼叫了c c 執行期啟動函式,該函式負責對c c 執行期庫初始化。它還能保證已經宣告了的任何全域性物件和靜態物件能夠在 執行之前正確的建立。完成這些工作後,就呼叫進入點函式 控制...

呼叫函式和被呼叫函式的關係

1 當在乙個函式的執行期間呼叫另乙個函式時,在執行被呼叫函式之前,系統需要完成三件事情 1 將所有的實參 返回位址等資訊傳遞給被呼叫函式儲存 2 為被呼叫函式的區域性變數分配儲存區 3 將控制轉移到被調函式的入口。2 從被呼叫函式返回到呼叫函式之前,系統要做三件事情 1 儲存被調函式的計算結果 2 ...

C 基礎之五 函式呼叫機制與呼叫約定

棧的作用和功能這裡就不再敘述了。先看乙個最簡單的函式呼叫例子 cpp view plain copy include stdafx.h int call int a,int b void tmain int call int a,int b main函式中呼叫call函式,並傳入2個引數a,b。呼叫...