<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

C語(yǔ)言的一些高級議題

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

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

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

  C語(yǔ)言之回調

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

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

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

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

  回調函數是一個(gè)程序員不能顯式調用的函數;通過(guò)將回調函數的地址傳給調用者從而實(shí)現調用。在我們想通過(guò)一個(gè)統一接口實(shí)現不同的內容時(shí),用回調函數非常合適。

  例如:有如下用于不同設備的顯示函數

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

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

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

  show(A_show);

  再舉一個(gè)經(jīng)典的例子,實(shí)現在一個(gè)單鏈表中查找一個(gè)值。

  Node *

  Search_list(Node *node,int const value)

  {

  While(node!=NULL){

  if(node->value == value)

  break;

  node = node->link;

  }

  return node;

  }

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

  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)知道要查找數據的數據類(lèi)型了。用法如下:

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

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

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

  {

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

  return 0;

  else

  return 1;

  }

  當然你不必這樣來(lái)寫(xiě),因為C語(yǔ)言函數庫里面有這樣的函數

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

  所以你就可以直接使用下面的代碼來(lái)實(shí)現在字符串鏈表中查找字符值的功能

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

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

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



上一頁(yè) 1 2 下一頁(yè)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>