1. 程式人生 > >C語言關於指針

C語言關於指針

因此 表數 pointer 包含 單單 存儲 占用 [ ] 改變

1.在對程序進行編譯時,系統會根據程序中所定義的變量來分配內存單元,即根據變量類型來分配一定長度的空間。內存區的每一個字節有一個編號,即地址。通過地址我們能夠找到所需的變量單元,因此可以說地址指向該變量單元。因此將地址抽象為指針。C語言中的地址,包括位置信息(內存編號/純地址)和類型信息。只有具有類型信息系統才能根據存儲長度調出數據。

2.直接訪問與間接訪問:直接訪問在尋址時就將該址中的值取出;間接訪問通過將變量i的地址儲存在另一變量中,再通過該變量來找到變量i的地址,從而訪問i變量。

3.由於通過地址能找到所需的變量單元,因此說指針指向該變量單元,將地址形象化為指針。

4.如果有一個變量專門用來存放另一變量的地址(即指針),則稱它為指針變量,指針變量的值是地址(即指針)。

5.定義時的*pointer_1,前面的*代表該變量是指針變量,後面使用時的*代表指針變量pointer_1所指向的變量。具有

6.指針變量的定義:類型名(基類型)*指針變量名。

7.指針變量前的*表示該變量為指針型變量。指針變量名是pointer_1,而不是*pointer_1,這與定義整型變量與實型變量不同。*號只在定義和輸出時使用。
8.始終要記住指針並不單單是一個地址,它包含兩個方面:以 存儲單元編號的純地址地址與它指向的數據單元的數據類型。
9.指針變量中只能存放指針,不要將一個整數賦給一個指針變量。在程序中是不能用一個數值代表地址的,地址只能用地址符&得到並賦給一個指針變量。

10.引用指針變量時的較特殊情況:引用指針變量的值。eg:printf(“%o”,p);表示以八進制方式輸出指針變量p的值。如果p指向了a,則表示輸出a的地址,即&a(&取地址運算符,&a表示a的地址。
11.對指針進行操作時,並不會改變指針變量所指向的地址的值,改變的是指針變量指向的地址.
12.引用數組元素可以用下標法,也可以用指針法。後者使目標程序質量高,即內存占用少,運行速度快。在C語言中,數組名(不包括形參數組名)代表數組中首元素的地址。因此,如對數組a,p=ad的作用是把數組a首元素的地址而非各元素的值賦給p。
13.定義指針變量的同時可以對其進行初始化:int*p=&a[0]
14.[ ]實際上是變址運算符,即將a[i]按a+i計算地址,然後找出此地址單元中的值。
15.如果指針變量p1和p2都指向同一數組中的元素,如執行p2-p1,結果是p2-p1的值除以數組元素的長度,得到兩個地址間的元素個數,從而計算其相對位置。

C語言關於指針