<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與指針》讀書(shū)筆記七

《C與指針》讀書(shū)筆記七

作者: 時(shí)間:2016-08-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  在這本書(shū)中作者專(zhuān)門(mén)討論了數組的下標和的關(guān)系。而且總結了一個(gè)結論:“假定兩種方法都是正確的,下標絕對不會(huì )比更有效率,但有時(shí)會(huì )比下標更有效率。”這個(gè)問(wèn)題我以前沒(méi)有注意到過(guò)。并且作者從編譯結果的角度證實(shí)自己的結論。

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

  int array[10] ,a;

  for( a =0 ;a < 10; a+=1 )

  array[a ] =0;

  這是一個(gè)數組的初始化,將整個(gè)數組初始化為0。array[a ]的定位方法比較特別,按照作者的意思是在計算array[a ]的地址時(shí)是arrary的值加上a乘于int的長(cháng)度值得到的。所以每次數組元素的訪(fǎng)問(wèn)都包含一次乘法運算。在基礎數字電路中我們知道加法器是比較容易實(shí)現的,乘法比較不太容易實(shí)現。而且乘法運算指令比加法運算指令周期要長(cháng)。也就是作者認為下標訪(fǎng)問(wèn)方法效率有提高的空間。

  int array[10] ,*ap;

  for( ap = array ;ap < array + 10; ap++ )

  *ap = 0;

  在for中每次循環(huán)只需將ap自增1即可。徹底拋棄了乘法運算。提高了運算效率。但是如果基礎比較薄弱的程序員應該接收不了此種寫(xiě)法,因為可讀性明顯降低。如果對程序時(shí)效和節能方面沒(méi)有特殊的要求,那么我建議還是使用易讀性強的編寫(xiě)方法。

  在書(shū)的146頁(yè)作者介紹一系列優(yōu)化方法。作者認為最優(yōu)的復制兩個(gè)數組的方法如下:

  void try5( )

  {

  register int *p1, *p2;

  for( p1 = x, p2 = y; p1 < &x[SIZE]; )

  *p1++ = *p2++;

  }

  編譯成最終代碼非常簡(jiǎn)練。

  在該章節最后,作者專(zhuān)門(mén)介紹這樣做實(shí)際意義。

  數組名作為參數傳遞函數時(shí),也就是將數組的首個(gè)元素地址復制給了函數的接收參數。通過(guò)該參數可以對整個(gè)數組進(jìn)行操作。

  作者再次舉例實(shí)現了一個(gè)字符串復制的函數。

  void strcpy( char *buffer, char const *string )

  {

  while(( *buffer++ = *string)!='国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品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>