c語言 初步了解一下指標

2021-09-27 06:01:51 字數 1316 閱讀 9549

指標的基本概念 在計算機中,所有的資料都是存放在儲存器中的.一般把儲存器中的乙個位元組稱為乙個記憶體單元,不同的資料型別所占用的記憶體單元數不等, 如整形量佔2個單元,字元量佔1個單元等。為了正確地訪問這些記憶體單元,必須為每個記憶體單元編上號。根據乙個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做位址。既然根據記憶體單元的編號或位址就可以找到所需的記憶體單元,所以通常也把這個位址稱為指標。記憶體單元的指標和記憶體單元的內容是兩個不同的概念。 可以用乙個通俗的例子來說明他們之間的關係。我們到銀行去訪問款時,銀行工作人員將根據我們的賬號去找我們的存款單,找到之後在存單上寫入存款,取款的金額。在這裡,賬號就是存單的指標,存款數是存單的內容。對於乙個記憶體單元來說,單元的位址即為指標,其中存放的資料才是該單元的內容。在c語言中,允許用乙個變數來存放指標,這種變數稱為指標變數。因此,乙個指標變數的值就是某個記憶體單元的位址或稱為某記憶體單元的指標。定義指標的目的是為了通過指標去訪問記憶體單元。

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

對指標變數的型別說明包括三個內容:

(1) 指標型別說明,即定義變數為乙個指標變數;

(2) 指標變數名

(3) 變數值(指標)所指向的變數的資料型別

(4) 指標事實上是一種資料型別,和int基本型別一樣。指標也是一種變數,占有記憶體空間,儲存的是記憶體位址

(5) 關於*p操作

1> 在宣告指標中, * 號表示所宣告的變數是乙個指標

2> 在指標使用時, *號表示操作指標所指向的記憶體空間中的值

3> 當 *p放在等號的左邊時,相當於給記憶體賦值

4> 當 *p放在等號的右邊時,相當於從記憶體中獲取值

int *p = null;//宣告p是乙個指標變數  

int i = 3,j = 0;

p = &i;//p指向i所在記憶體

*p = 5;將p所指的記憶體的值改變為5,此時變數i的值也是5

j = *p;//將*p把指的記憶體空間的值(i的值)賦值給j

指標了解一下

在c語言中,我們會頻繁的使用指標,那麼什麼是指標?首先我們來看一段 include int main 假如建立的變數a的位址為0x0000ff11,那麼指標變數指向變數a,存放的是變數a的位址。總結 指標就是位址,指標變數是變數,指標變數是用來儲存位址的變數。存放在指標變數中的值都會被當做位址來處理...

初步了解一下什麼是ruby

關鍵字 def undef 方法定義 module 模組定義 class 類otbinj定義 defined?檢查型別 條件語句 if,then,else,elsif,case,when,unless 迴圈語句 for i程式設計客棧n,while,until,next,break,do,redo,...

c語言指標(初步了解),它來了!

指標的用法 在要知道什麼是指標的前提下,我們首先要做的就是搞懂為什麼會有指標?我們需要它來為我們做些什麼?如上圖為一棟宿舍樓,假如這個宿舍樓的每個房間都一樣並且沒有貼門牌號,那麼李四如果要去找張三,他就只能一間一間的去找,也就是我們所說的通過遍歷的方法找,這樣的查詢效率特別低。但對於一棟裝修好的宿舍...