新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 《C與指針》讀書筆記二

        《C與指針》讀書筆記二

        作者: 時間:2016-07-21 來源:網絡 收藏

          關于變量的解引用在該書中有另外一種說法----“間接訪問”。我認為“間接訪問”比較能更好的表達*Point實際含義。我不知道英文版中是怎么描述的,但是這種翻譯方法更能表達的物理含義。在我的同事中“解引用”說法比較流行。“間接訪問”徹底表達了變量和指針內容的意義。

        本文引用地址:http://www.104case.com/article/201607/294356.htm

          通過以下語句可以簡單了解指針的意義。

          int a = 112;

          int b = -1;

          float c = 3.14;

          int *PointA ;

          float *PontB;

          PointA = &a;

          PontB = &c;

          通過一下內存模型來理解,就特別方便。

          PointA = &a; 是使PointA指向a變量的地址,PointA的地址為0x101 02,值為0x100 00。*PointA表達了對0x100 00地址的訪問,所以是“間接訪問”。

          除了強調指針“間接訪問”,指針可以用于算數運算。這在初級入門的書本中是不介紹的。其實指針算數運算也有很大的應用。

          int a[10];

          int *Point;

          Point = &a[0];

          Point ++;

          Point +=6;

          Point = &a[0]; 是將數組a的第一個元素的地址賦給Point,與Point = a;完全等價的。數組的名稱代表了數組的起始地址。圖解如下:

          Point++;執行結束后,0x101 02地址內容為0x100 00,Point存入的地址為a[0]的地址。如果* Point間接訪問是a[0]的值。 Point +=6;執行結束后,0x101 02地址內容為0x100 06,如果* Point間接訪問是a[6]的值。

          通過這里了解,就可以得出指針在傳遞大量參數時所體現出的效率非常高。因為只要將a數組的地址和長度傳遞給工具函數即可。這里的“工具”函數可以理解為加工處理數據的函數,比如隊一組數組排序的函數。最常見的書冒泡排序。

          void bubbleSort( int sort[], unsigned char len )

          {

          char i,j;

          int temp;

          len -= 2;

          for( i =len; i>=0; i--)

          {

          for( j =0; j<=i; j++)

          {

          if( sort[j+1] < sort[j])

          {

          temp = sort[j];

          sort[j]=sort[j+1];

          sort[j+1]=temp;

          }

          }

          }

          }

          在bubbleSort函數中,使用了sort即是地址。Len即書排序的數據。調用方法如下:

          bubbleSort( Tarrary, 5);

          只需要一個指針傳送一個地址,和一個長度,完成了對Tarrary數組的排序。



        關鍵詞: C 指針

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 叙永县| 班戈县| 平罗县| 灵山县| 牙克石市| 安溪县| 长葛市| 内黄县| 阿拉善右旗| 蒲城县| 信宜市| 桐柏县| 通化县| 商洛市| 无棣县| 新竹县| 汕头市| 灯塔市| 商河县| 视频| 日照市| 景宁| 兰考县| 米泉市| 准格尔旗| 扶沟县| 舟曲县| 漠河县| 海丰县| 青神县| 临夏县| 错那县| 股票| 尉犁县| 迁西县| 西吉县| 长武县| 长寿区| 鹿邑县| 山西省| 和静县|