陣列指標的用法,用處。

2021-07-28 02:36:11 字數 1424 閱讀 4311

int *a[4]; //指標陣列

指標陣列就相當於一次宣告了多個指標。陣列的每乙個元素都是乙個指標。很好理解,下面主要看陣列指標

int (*p)[4]; //陣列指標

陣列指標就相當於一次宣告了乙個指標。只不過這個指標指向很特別,是乙個陣列。

優先順序大於*,故陣列指標宣告時要加()。

例1:

#include#include

void

main()

;

int (*p)[4]; //

該語句是定義乙個陣列指標,指標步長為4個int即16位。

//int *p2=b;

p=b;

int i=0

;

while(i<16

)

}

printf("%d\t",(*p)[i]);遍歷輸出陣列b;

陣列指標就相當於舞王殭屍一樣,帶了小弟,n就是小弟的個數,通過下標值能直接訪問到具體哪乙個小弟,即陣列裡哪乙個數

陣列指標下標自增(i++)的時候,指標指向不變。

這裡直接用整形指標就可實現,而且更方便簡潔。見上面被注釋部分。

例2:把例1的while()語句替換。

while(i<4

)

例2輸出1 5 9 13,相當於指標一次移動了4個int.16個位元組。

陣列指標自增(*p++)時,指標指向移動sizeof(型別)。

其實上句在其他型別指標也適用。

如int *p;

//指標指向了int,就是整型指標,整型指標有啥特點?就是能儲存整形變數的位址。有啥用途?就是p++的時候能指向下乙個int型數。所以了?經常用指標指向乙個陣列。因為他們都是int型的,所以推導出步長了?整型指標的步長為sizeof(int),即4位元組    

//同理可以得出什麼float型指標,char型指標什麼的。。。    

同理就得出了陣列指標,特點?儲存陣列首位址。用途?p++的時候能指向下乙個陣列。所以了?要用它來指向乙個二維陣列。因為二維陣列裡的每乙個元素都是相同型別的(都是乙個int型陣列),所以推導出步長了?sizeof(int[4]),即16

//說白了就一指標,指向了陣列型別

例3:陣列指標指向二維陣列。

#include#include

void

main()

,,};

int (*p)[4]; //

該語句是定義乙個陣列指標,指標步長為4個int即16位。

p=a;

int i=0

;

while(i<3

)

}

通過例3就能夠很明顯的看出陣列指標下標自增與本身自增的區別了。

我記得以前老師說過:能用一維陣列就盡量不要用二維陣列。我想說的是:能用指標實現的盡量不要用陣列指標。

C C 函式指標,指標函式的用法,用處

先看函式指標 int func2 int x 宣告乙個函式 int q2 int x 宣告乙個函式指標 q2 func2 將func函式的首位址賦給指標f int c q2 3 3可以為任意實參 上面4句基本說明了函式指標的用法 函式指標是指向函式的指標,確切的說,是指向特定型別函式的指標 函式與函...

C C 函式指標,指標函式的用法,用處

先看函式指標 int func2 int x 宣告乙個函式 int q2 int x 宣告乙個函式指標 q2 func2 將func函式的首位址賦給指標f int c q2 3 3可以為任意實參 上面4句基本說明了函式指標的用法 函式指標是指向函式的指標,確切的說,是指向特定型別函式的指標 函式與函...

this指標的用處

1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加...