在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > C語言的一些高級議題

            C語言的一些高級議題

            作者:areak 時間:2014-10-23 來源:電子產(chǎn)品世界 收藏

              的靈魂,我們經(jīng)常聽到這樣的說法,當(dāng)我們初學(xué)的時候,似乎覺得也沒有什么,但是當(dāng)你越來越深入的了解它,你就會發(fā)現(xiàn)的強大有時甚至超乎你的想象。C語言作為一種相對較為底層的語言,在某些方面有著不可替代的優(yōu)勢。因此,要學(xué)好C語言,要深入,要精通。

            本文引用地址:http://www.biyoush.com/article/264327.htm

              C語言之回調(diào)

              先來看下的的基礎(chǔ)知識,,顧名思義,就是指向函數(shù)的指針,聲明方法如下:

              int func(int); //函數(shù)原型

              int (*pfunc)(int) = & func; //創(chuàng)建函數(shù)指針pfunc,并指向函數(shù)func

              這里的&操作符可有可無,因為函數(shù)名本身就是一個地址。

              回調(diào)函數(shù)是一個程序員不能顯式調(diào)用的函數(shù);通過將回調(diào)函數(shù)的地址傳給調(diào)用者從而實現(xiàn)調(diào)用。在我們想通過一個統(tǒng)一接口實現(xiàn)不同的內(nèi)容時,用回調(diào)函數(shù)非常合適。

              例如:有如下用于不同設(shè)備的顯示函數(shù)

              Void A_show(); Void B_show(); Void C_show();

              Void show(void (*ptr)());

              使用時我們就可以將函數(shù)作為參數(shù)

              show(A_show);

              再舉一個經(jīng)典的例子,實現(xiàn)在一個單鏈表中查找一個值。

              Node *

              Search_list(Node *node,int const value)

              {

              While(node!=NULL){

              if(node->value == value)

              break;

              node = node->link;

              }

              return node;

              }

              這個函數(shù)只適用于值為整形的鏈表,因為value的值為int型,如果此時你需要在一個字符串鏈表中查找,需要編寫另外的函數(shù)來實現(xiàn)。這時就用到了回調(diào)函數(shù),使查找函數(shù)與類型無關(guān),這樣就能用于任何類型的值的鏈表。

              Node *

              Search_list(Node *node,void const value,

              int (*compare)(void const * ,void const *))

              {

              While(node!=NULL){

              if(compare(&node->value,value)==0)

              break;

              node = node->link;

              }

              return node;

              }

              int compare_ints(void const *a, void const *b)

              {

              if(*(int*)a == *(int *)b)

              return 0;

              else

              return 1;

              }

              我們在使用Search_list函數(shù)時,你已經(jīng)知道要查找數(shù)據(jù)的數(shù)據(jù)類型了。用法如下:

              Desired_node = Search_list(root, &desired_value,compare_ints);

              那如果你要在一個字符串鏈表中查找呢?首先你要在定義用于比較字符串一個函數(shù):

              int compare_chars(void const *a, void const *b)

              {

              if(*(char*)a == *(char *)b)

              return 0;

              else

              return 1;

              }

              當(dāng)然你不必這樣來寫,因為C語言函數(shù)庫里面有這樣的函數(shù)

              strcmp( const char *string1, const char *string2 );

              所以你就可以直接使用下面的代碼來實現(xiàn)在字符串鏈表中查找字符值的功能

              Desired_node = Search_list(root, &desired_value, strcmp);

              這樣,可以不必修改Search_list函數(shù),而使得Search_list函數(shù)的功能更加通用。

            c語言相關(guān)文章:c語言教程



            上一頁 1 2 下一頁

            關(guān)鍵詞: C語言 指針 函數(shù)

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉