C語言指標用法總結 指標與陣列

2021-10-03 08:21:35 字數 1612 閱讀 6860

```c

#include

intmain()

;int i;

printf

("%d\n"

,a);

// a指向a[0],a[0]int的元素,a的型別就是 int* 4,+1跨度是4個位元組

printf

("%d\n"

,a+1);

printf

("%d\n"

,&a)

;// &a這個位址指向整個陣列,int(*)[5],+1跨度是整個陣列的位元組長度,即20個位元組

printf

("%d\n"

,&a+1)

;int

*p = a;

//將a的位址賦給指標變數p,所以p指向a[0]

//訪問一維陣列元素的方法

//1、 下標法

for(i=

0;i<

5;i++

)//2、 指標法(一)

for(i=

0;i<

5;i++

)//2、 指標法(二)

for(i=

0;i<

5;i++

)//二維陣列與指標

//定義乙個二維陣列,陣列名b是第乙個一維陣列的記憶體位址!

int b[3]

[4]=

;//b的型別是int* [4],+1跨度是16個位元組

printf

("%d\n"

,b);

printf

("%d\n"

,b+1);

printf

("%d\n"

,b[0])

;//b[0]是第乙個一維陣列的第乙個元素的記憶體位址!,型別是int* ,+1跨度是4個位元組

printf

("%d\n"

,b[0]+

1);printf

("%d\n"

,&b)

;//&b這個位址指向整個陣列,+1跨度是整個陣列位元組長度,即

//訪問二維陣列的方法

//一、 下標法

printf

("%d\n"

,b[1][

2]);

//二、 用行位址

printf

("%d\n",*

(b[1]+

2));

//b[m]+n是想取出元素的位址,加上*即可取出該元素。

//三、 用陣列名

printf

("%d\n",*

(*(b+1)+

2));

//b指向b[0],b+1指向b[1],型別是int* [4],

// *(b+1)即a[1]的首位址,型別是int* ,然後再進行偏移取值。

//由法二與法三可以看出b[1]等價於*(b+1)

//總結:二維陣列陣列名的意思

//b 是int型別

//b 是int*型別

//b 是int*[4]型別, 多維陣列以此類推。

return0;

}

C語言指標陣列與陣列指標

初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...

C語言指標 指標與陣列

1 指標與一維陣列 2 指標與二維陣列 3 指標陣列與陣列指標 指標裡面最難的一種就是指標與陣列了,對於指標和二維陣列來說這裡面的關係比較複雜。牽涉到編譯器的原理和編譯過程。1 指標與一維陣列 指標是指向乙個記憶體的位址,一維陣列的陣列名代表一塊記憶體 這個陣列 的首位址,和陣列首元素的位址一樣,但...

C語言指標 指標與陣列

一 指標的運算 指標可以進行三種運算 1.指標加上整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提是a i j 存在!2.指標減去整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提 a i j 存在!3.兩個指標相加減 兩指標必須指向同一變數!否則運算沒有意義的...