C語言指標二

2021-09-30 16:30:07 字數 2884 閱讀 4241

一、指標與陣列(一維)

a+k =

&a[k]

*(a+k)

= a[k]

如果將陣列的起始位址賦給某個指標變數,那麼該指標變數就是指向陣列的指標變數.

int a[10]

,*p=a;

(或*p=

&a[0

])

*(p+i)、*8(a+i)和p[i]就是陣列元素a[i]

p+i和a+i、&p[i]都是陣列a[i]的位址

p+1指向陣列的下乙個元素,而不是簡單地使指標變數p的值+1。其實際變化為p+1size(size為乙個元素占用的位元組數)。例如,假設指標變數p的當前值為2000,則p+1為2000+12=2002,而不是2001。

p[k]

= 』a』+k

相當於 *

(p+k)

= 』a』+k

*p++

= 』a』+k

相當於*p = 』a』+k;

p++;

二、多維陣列

1)二維陣列的行位址與列位址

1、一般指標變數

當二維陣列的首位址賦給指標變數p以後,則訪問某個元素a[i][j]可用以下幾種方式來代替:(p+in+j)、p[in+j]、(a[0]+i*n+j)

2、行指標變數

a[i][j]可用以下幾種方式來代替:

*

(a[i]

+j)、*(*

(a+i)

+j)、(

*(a+i)

)[j]

3、對於二維陣列int a[3][4],有

a -------------------- 二維陣列的首位址,即第0行的首位址

a+i ------------------ 第i行的首位址

a[i] 、(a+i)-----------第i行第0列的元素位址

a[i]+j、(a+i)+j --------第i行第j列的元素位址

*

(a[i]

+j)=*(

*(a+i)

+j)= a[i]

[j]

a+i = &a[i] = a[i] = (a+i) = &a[i][0],值相等,含義不同

a+i、&a[i],表示第i行首位址,指向行

a[i]、(a+i)、&a[i][0],表示第i行第0列元素位址,指向列

4、指標指向變數對二維陣列的引用

初始化:p=a;或p=&a[0];

a[i][j] 可用以下幾種方式來代替:

p[i]

[j],

*(p[i]

+j),*(

*(p+i)

+j),(*

(p+i)

)[j]

對指向二維陣列的指標變數進行賦值一般形式為:

(1) 二維陣列名+整型常數n,如:p = a + 1; 或

(2) &二維陣列名[整型常量n],如:p = &a[1]。

不可用陣列單元位址對其賦值。

如:p = a[0];或p = &a[0][0]都是錯誤的。

2) 通過二維陣列的行指標來訪問二維陣列

int a[2]

[3];

int(

*p)[3]

;(v)

int*p[3]

;(x)

int(

*p)[2]

;(x)

int (*p)[3]; //定義乙個陣列指標,該指標指向含3個元素的一維陣列(陣列中每個元素是int型)。

int *p[3]; //定義乙個指標陣列,該陣列中每個元素是乙個指標,每個指標指向**就需要程式中後續再定義了。

區分int *p[n]; 和int (*p)[n]; 就要看運算子的優先順序了。

int p[n]; 中,運算子[ ]優先順序高,先與p結合成為乙個陣列,再由int說明這是乙個整型指標陣列。

int (*p)[n]; 中( )優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列。

//指標陣列對鍵盤輸入的五個值用冒泡從小到大排序

intmain()

;//對a,b,c,d,e賦值

scanf (

"%d,%d,%d,%d,%d"

, p[0]

, p[1]

, p[2]

, p[3]

, p[4]

);for(i =

0; i <

4; i++

)//利用冒泡法排序

for(j = i +

1; j <

5; j++)if

(*p[i]

>

*p[j]

)//交換p[i]、p[j]所指向的變數值

for(i =

0; i <

5; i++

)//顯示排序後的結果

該方法是將a,b,c,d,e所對應的記憶體單元的值進行交換,而指標陣列並無變化

C語言指標學習 二

1.c語言中,實參變數與形參變數之間的資料傳遞,是單向的 值傳遞 方式。指標變數做函式引數也要遵循這一規則。呼叫函式不可能改變實參指標變數的值,但可以改變實參指標變數所指向變數的值。我們知道函式的呼叫可以得到乙個返回值,而運用指標變數做引數,可以得到多個變化了的變數值。2.在主調函式中宣告所要求的數...

C語言指標入門(二)

指標 1.指標是什麼?起什麼作用?指標是變數的一種,裡面是乙個位址,通過這個位址找到要找的資料 2.指標運算子 是取位址的運算子,是表示指標運算子 例 int p1,a p1 a p1 3 例題 include int main int p int a 3 p a printf d p 輸出結果 3...

C語言之指標二

函式指標 如果在程式定義了乙個函式,在編譯時,編譯系統為函式 分配一段儲存空間,這段儲存空間的起始位址,稱為這個函式的指標 函式名就是函式開始的位址 函式二級指標可以修改函式指標的指向 函式指標,不僅僅是位址,必須明確函式指標型別和輸出引數型別和數量 函式名可以作為引數傳遞給函式指標 include...