C語言指針的概念

來源:文萃谷 2.51W

引導語:在信息工程中,指針是一個用來指示一個內存地址的計算機語言的變量或中央處理器(CPU)中的寄存器(Register)。以下是本站小編向大家介紹一下C語言指針,歡迎閲讀!

C語言指針的概念

 1.1 指針與指針變量的概念,指針與地址運算符

1.在C語言中,指針是指一個變量的地址,通過變量的地址″指向″的位置找到變量的值,這種″指向″變量地址可形象地看作″指針″。用來存放指針的變量稱為指針變量,它是一種特殊的變量,它存放的是地址值。

2.定義指針變量的一般形式為:

類型名 *指針變量1,*指針變量2,…;

″類型名″稱為″基類型″它規定了後面的指針變量中存放的數據類型,″*″號表明後面的″指針變量1″,″指針變量2″等是指針變量,″*″號在定義時不能省略,否則就會變成一般變量的定義了。″指針變量1″,″指針變量2″等稱為指針變量名。

3.一個指針變量只能指向同一類型的變量。

4.與指針和指針變量有關的兩個運算符:

(1)*:指針運算符(或稱″間接訪問″運算符)

(2)&:取地址運算符

通過*號可以引用一個存儲單元,如有如下定義:

int i=123,*p,k;

則 p=&I;或k=*p;或k=*&I;都將變量i中的值賦給k。

*p=10;或*&i=10;都能把整數10賦給變量i。這裏,等號左邊的表達式*p和*&i都代表變量i的存儲單元。

 1.2 變量、數組、字符串、函數、結構體的指針以及指向它們的指針變量

1.變量的指針和指向變量的指針變量。

2.數組的'指針和指向數組的指針變量。

所謂數組的指針是指數組的起始地址,數組元素的指針是數組元素的地址。

C語言規定數組名代表數組的首地址,也就是第一個元素的地址。

3.字符串的指針和指向字符串的指針變量。

我們可以通過定義説明一個指針指向一個字符串。

C語言將字符串隱含處理成一維字符數組,但數組的每個元素沒有具體的名字,這一點跟字符數組不一樣。要引用字符串中的某個字符,只能通過指針來引用:*(s+0),*(s+1),…,*(s+n)。

4.函數的指針和指向函數的指針變量。

指向函數的指針變量的一般形式為 :

數據類型標識符 (*指針變量名)();

這裏的″數據類型標識符″是指函數返回值的類型。

函數的調用可以通過函數名調用,也可以通過函數指針調用(即用指向函數的指針變量調用)。

指向函數的指針變量表示定義了一個指向函數的指針變量,它不是固定指向哪一個函數,而只是定義了這樣的一個類型變量,它專門用來存放函數的入口地址。在程序中把哪一個函數的地址賦給它,它就指向哪一個函數。在一個程序中,一個指針變量可以先後指向不同的函數。

在給函數指針變量賦值時,只需給出函數名而不必給出參數。因為函數指針賦的值僅是函數的入口地址,而不涉及到實參與形參的結合問題。

對指向函數的指針變量,表達式p+n,p++,p--等都無意義。

5.結構體的指針與指向結構體的指針變量

一個結構體變量的指針就是該變量所佔據的內存段的起始地址。可以設一個指針變量,用來指向一個結構體變量,此時該指針變量的值是結構體變量的起始地址。指針變量也可以用來指向結構體數組中的元素。

1.3 用指針做函數參數

函數的參數不僅可以是整型、實型、字符型等數據,還可以是指針類型,它的作用是將一個變量的地址傳送到另一個函數中。

  1.4 返回指針值的指針函數

一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型數據 ,即地址這種帶回指針值的函數,一般的定義形式為:

類型標識符 *函數名(形參表);

 1.5 指針數組、指向指針的指針

1.指針數組指的是一個數組,其元素均為指針類型數據,也就是説,指針數組中的每一個元素都是指針變量。指針數組的定義形式為:

類型標識 *數組名[數組長度説明]

指針數組可以使字符串處理更加方便。

熱門標籤