在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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與指針》讀書筆記七

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

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

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

              int array[10] ,a;

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

              array[a ] =0;

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

              int array[10] ,*ap;

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

              *ap = 0;

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

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

              void try5( )

              {

              register int *p1, *p2;

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

              *p1++ = *p2++;

              }

              編譯成最終代碼非常簡練。

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

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

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

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

              {

              while(( *buffer++ = *string)!='