第5章、陣列和指標 - C/C++

文章推薦指數: 80 %
投票人數:10人

但是有三種應用場合,使用指標仍然是必要的。

第一是字串(string)的宣告;第二是動態記憶體配置(dynamic memory allocation);第三是函式的陣列傳遞。

指標變數(Pointer ... 計算機概論:C/C++程式設計   第5章、陣列和指標     授課教師:陳慶瀚 WWW :http://www.miat.ee.isu.edu.tw/cpp E-mail:[email protected]     5.4使用指標 如果問那些學過C/C++語言的人,哪一個主題是它們遇過最大的障礙,大部分人應該都會回答:指標(Pointer)。

指標確實是C/C++語言當中最難駕馭的技術課題,但是它同時也是讓C/C++語言成為高階語言中擁有最高效能和最大彈性的關鍵。

儘管不是事實─但在許多人的心目中,對指標的熟稔程度甚至成為衡量一個C/C++程式設計師功力的衡量標準。

指標的複雜度來自它對實體記憶體位置的操作,大多數的高階語言基於系統的安全性和程式的高階抽象化設計的理念,通常都不允許對實體記憶體位置進行操作,因為一旦對實體記憶體進行不當的存取,就有可能造成程式的異常當機,甚至波及系統程式的穩定性。

但從另一個角度看,適當的使用指標可以讓工程師更貼近硬體(記憶體)的層次,因此將有利於設計出更節省資源、更高效能的程式。

對於非資訊專業的科學計算或工程應用人員,可能會覺得指標的用法難以掌握,甚至在面對「指標滿天飛」的C/C++程式原始碼,常常覺得無從下手,因為無法解讀其設計涵義,當然更難以維修或擴充其原始碼。

對此,我們將從科學和工程計算的實用觀點來介紹指標的概念和用法,在效率及功能不受影響的情況下,我們儘可能不使用指標,以維持C/C++程式設計的簡易和直覺特性。

但是有三種應用場合,使用指標仍然是必要的。

第一是字串(string)的宣告;第二是動態記憶體配置(dynamicmemoryallocation);第三是函式的陣列傳遞。

指標變數(PointerVariable) 指標(pointer)是一種用來指示資料存在於記憶體中的位址標示器,其宣告方式為 資料型別*變數名稱; 資料型別通常是基本的資料型別,如int,float,char等,變數名稱與一般變數的命名法則相同,差異處在於名稱前加上一個星號*。

只要在變數宣告時,變數名稱加上一個前飾符號*,該變數就是指標變數,例如:  int*p; 以上的宣告具有三個意義: 1、p是一個指標變數; 2、一旦宣告p是指標變數,則p代表一個記憶體位址,而*p代表此位址的資料內容; 3、p所指向記憶體位址內的資料的變數型態為整數(int)。

  圖5.1指標變數與指標的變數值 取址運算子&    如果我們宣告一個指標變數,則該變數所存放的值就是一個記憶體位址,但如果我們宣告一個一般變數,如何能夠知道這個變數位於那個記憶體位址?C/C++語言提供一個可取得任意變數記憶體位址的運算子,稱為取址運算子─"&",其應用模式如下例: /*----------------------------------------------------*/ //範例程式5-4 //使用取址運算子─"&" //陳慶瀚,2001 /*----------------------------------------------------*/ #include voidmain() {   intval=40;    int*addr;   addr=&val;   cout<



請為這篇文章評分?