C 為什麼發明指標?

2021-08-03 15:16:56 字數 1314 閱讀 8400

指標是c語言中廣泛使用的一種資料型別。 運用指標程式設計是c語言最主要的風格之一。利用指標變數可以表示各種資料結構; 能很方便地使用陣列和字串; 並能象組合語言一樣處理記憶體位址,從而編出精練而高效的程式。指標極大地豐富了c語言的功能。 學習指標是學習c語言中最重要的一環, 能否正確理解和使用指標是我們是否掌握c語言的乙個標誌。同時, 指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。只要作到這些,指標也是不難掌握的。

指標的基本概念 在計算機中,所有的資料都是存放在儲存器中的。 一般把儲存器中的乙個位元組稱為乙個記憶體單元, 不同的資料型別所占用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等, 在第二章中已有詳細的介紹。為了正確地訪問這些記憶體單元, 必須為每個記憶體單元編上號。 根據乙個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做位址。 既然根據記憶體單元的編號或位址就可以找到所需的記憶體單元,所以通常也把這個位址稱為指標。 記憶體單元的指標和記憶體單元的內容是兩個不同的概念。 可以用乙個通俗的例子來說明它們之間的關係。我們到銀行去訪問款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之後在存單上寫入存款、取款的金額。在這裡,帳號就是存單的指標, 存款數是存單的內容。對於乙個記憶體單元來說,單元的位址即為指標, 其中存放的資料才是該單元的內容。在c語言中, 允許用乙個變數來存放指標,這種變數稱為指標變數。因此, 乙個指標變數的值就是某個記憶體單元的位址或稱為某記憶體單元的指標。圖中,設有字元變數c,其內容為「k」(ascii碼為十進位制數 75),c占用了011a號單元(位址用十六進數表示)。設有指標變數p,內容為011a, 這種情況我們稱為p指向變數c,或說p是指向變數c的指標。 嚴格地說,乙個指標是乙個位址, 是乙個常量。而乙個指標變數卻可以被賦予不同的指標值,是變。 但在常把指標變數簡稱為指標。為了避免混淆,我們中約定:「指標」是指位址, 是常量,「指標變數」是指取值為位址的變數。 定義指標的目的是為了通過指標去訪問記憶體單元。

既然指標變數的值是乙個位址, 那麼這個位址不僅可以是變數的位址, 也可以是其它資料結構的位址。在乙個指標變數中存放一 個陣列或乙個函式的首位址有何意義呢? 因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首位址, 也就找到了該陣列或函式。這樣一來, 凡是出現陣列,函式的地方都可以用乙個指標變數來表示, 只要該指標變數中賦予陣列或函式的首位址即可。這樣做, 將會使程式的概念十分清楚,程式本身也精練,高效。在c語言中, 一種資料型別或資料結構往往都占有一組連續的記憶體單元。 用「位址」這個概念並不能很好地描述一種資料型別或資料結構, 而「指標」雖然實際上也是乙個位址,但它卻是乙個資料結構的首位址, 它是「指向」乙個資料結構的,因而概念更為清楚,表示更為明確。 這也是引入「指標」概念的乙個重要原因。

[指標是c語言接地氣的表現和發明。]

為什麼使用指標

在實際程式設計中,既然使用變數就可以訪問資料,為什麼還用指標呢?使用指標來操縱自動變數的唯一原因是,為了說明指標的工作原理。指標真正的用途是被用於完成下列3種任務 管理自由儲存區中的資料 訪問類的成員資料和函式 按引用傳遞引數 在 函式的 工作原理 中,提到了5個記憶體區域 全域性命名空間 自由儲存...

為什麼c 的指標那麼難學?

指標本身是乙個很淺顯的概念,它就是代表了記憶體中的乙個位址 通過這個位址 就能獲取這個位址上儲存的資料 嗯,很簡單的道理。但為何寫起 來就感覺被漿糊團團圍住?因為語言發明者給剛入門的程式設計師搞了乙個非常不友好的設定 兩個意思相近但其實很不一樣的操作符 卻用了同乙個符號!在宣告乙個變數名字是什麼型別...

為什麼要發明電銷機械人呢?

電銷機械人就是乙個從實踐中創新的不錯範例。傳統電銷行業,為實現公司業績最大化,只能增加更多的電銷人員來實現目標。但是,隨著人員的增加,企業的成本也越來越高。為什麼要這樣說呢,我們來算一筆賬就知道了。企業每招來乙個員工,需要付出底薪 提成 補貼 管理 加班費 培訓 費 辦公耗材等,這意味著什麼,相必大...