程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 我也要學C語言-第八章:流程控制與函數機制

我也要學C語言-第八章:流程控制與函數機制

編輯:關於C語言

一:流程控制

  今天我學流程控制啦!練習了三種程序流程控制3小時。在學習的過程中,我看到了一句話“順序,分支,循環可以描述任何的算法。”看來如何把問題用,順序,分支,循環去描述了就可以說是一個問題的算法了。說明啦!流程控制需要大量的去練習各種算法了。所以這個要學好只有狠下功夫了哦!

二:函數

  1:函數的聲明:函數返回值 函數名(形式參數類型........)

         {

              函數的代碼塊

              如果需要的話,還需要return (表達式)

          }

  2:函數的作用:把細節封裝啦!因為你需要1個功能的函數,只要看此函數的聲明就知道了。因為一般好的函數的函數名都很有涵義,一看就知道他是做什麼的了,實現了模塊化編程。而且函數可以重復的用,就像吃飯的碗啊!只要沒壞,每頓飯都可以拿同一個碗來裝飯。而且啊!每個“碗”也是獨立的,洗完的時候是一個一個洗的,有些“髒(bug)”1點就多洗下啦!

  3:形參和實參:函數定義的時候所接受的參數叫形參;調用函數時候給函數的值是實參。

  3:函數的運行機制

     值傳遞:

#include <stdio.h>

void change(int a, int b)
{
int temp = a;
a = b;
b = temp;
}

int main(void)
{
int i = 0;
int j = 1;

change(i, j);

printf("i=%d", i);
printf("j=%d", j);

return (0);
}

嘿嘿!我想呢!這樣就交換了2個變量的值啦!但是結果很郁悶啊!並沒有交換!怎麼回事啊!干脆調試1下看看喏!

現在馬上就要進入交換函數了哦!

哦!原來是這樣啊!看看啊!形參a,b和實參ij的地址是不一樣的啊!交換的只是復制品!克隆人!仔細看,實參和形參原來只是值一樣,地址不一樣的哦!如果交換的只是形參和實參一點關系都沒有啊!就像好多壞孩子,她想要詛咒人,她就去買個小娃娃,把這個小娃娃當著是她討厭的人!然後每天不停的對著這個娃娃去詛咒,以為這樣就可以讓別人倒霉。唉!其實她的詛咒一點作用都沒有!我以前以為真的有用呢,現在學了函數,我覺得真的沒用的哦!o--o!以前的scanf為什麼要取地址原來也是這個原因啊!

  既然函數是這樣子交互的,那就可以總結1下函數的調用過程了!

  1:參數的復制(把“仇人的主要特征用“本本”記下來”)

  2:保存返回地址(當買了“娃娃”後,擔心自己不是那麼的壞,或者有一天會把“娃娃”送給商家!所以記下商家的詳細地址!)

  3:開辟內存空間(當買了個”娃娃“後,它就會占用一定的宇宙空間啊)

  4:規劃局部變量(然後給"娃娃"打扮下,讓看起來更像那個人,而且准備好"道具"去詛咒它!畫個圈圈什麼的,呵呵!)

  5:執行函數體代碼(然後就開始“詛咒”啦!)

  6:撤銷內存空間(嗯!詛咒累了!唉!覺得這樣真的不是好孩子啊,還是把娃娃送還給商家啦!)

  7:取得返回地址(突然有一天意識到這樣做是不正確的,就准備把“娃娃”送還給商家了!所以拿出以前"本本"記下的商家詳細地址!)

  8:參數的內存空間撤銷(唉!既然要重新做個好孩子,那麼把以前的那個“本本”也仍了吧!)

三:仍“本本”的人(參數的內存空間撤銷---vc6.0中在Project Settings中的c/c++的Calling convention中設置(又叫調用約定))

  仍“本本”的這個事啊,其實也可以有幾種方式了呢!

    1:把這個本本讓商家幫我“仍”了吧!這樣“商家”(函數的調用方)就知道以前是個壞孩子,現在要該過自新!這樣,“商家”就可以見證我的改過了哦!而且商家也知道了這個孩子以前壞在哪裡,買了幾個娃娃(參數個數)這樣下次這個孩子又想買娃娃的       時候,說不定她更壞了啊,要買很多個娃娃,所以商家把娃娃的貨進得老足老足的了。要多少個都可以(printf,scanf多參函數)!—— _cdecl

    2;3: _fastcall和_stdcall 這2個方式呢!仍“本本”就自己去仍了,這樣丟臉事還是不告訴別人的好。嘿嘿!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved