指標的使用

2021-07-28 00:12:19 字數 1788 閱讀 6345

指標的使用

1.注意:一定要在對指標應用解除應用操作符(

*)之前,將指標初始化為乙個確定的位址。

例子:#include

int main()

int a;

int *p;

*******************/

*p=10;  

//正確使用方法

p=&a;

*p=10;

c++中還可以使用

new來給指標確定位址。

例子:#include

int main()

int a[4]=new int[4];

int i=0;

for(i=0;i<4;i++)

a[i]=i;

delete a;

2.二維陣列指標定義:

對於int **p來說,

p所指的物件是指標,那麼

++p就是讓

p的值增乙個指標的大小,雖然指標所指對像可大可小,但是指標自己的大小卻是一定的,目前的系統上一般是

4位元組(

64位系統我沒用過,可能是

8位元組)。也就是說,對

char *p

和long *q

來說,p和q

本身佔記憶體容量是一樣大的(雖然

char

和long

佔記憶體不一樣大)。

很多人以為「指向陣列的指標」就是

「指向指標的指標

」,於是有人寫這樣的**:

int a[2][3];

int **p = a;//錯誤

這個**的錯誤之處在於a是乙個陣列,它的成員也是陣列,所以a叫做

「陣列的陣列

」——c++

中嚴格說來沒有二維陣列。那麼,你要用乙個指標來記錄

a,就要用乙個能表示

「陣列的陣列

」的指標,以下**是正確的:

int (*p)[3] = a;//正確

只有這樣才能保證++p使p指向

a的下一對像(該對像是乙個陣列)。

順便提一句:不要寫成「int *p[3];」

int *p[3];//定義

p[3]

為指標陣列

int (*q)[3];//定義

q為陣列指標

int a[4][3];//定義乙個二維陣列

3.指向指標的指標

#include

int main()

int a[5]=;

int *num[5]=;   //定義乙個指標陣列

int **p,i;

p=num;

for(i=0;i<5;i++)

printf(「%d」,**p);

p++;

printf(「\n」);

4.指向函式的指標

#include

int (*p)(int,int);

int printf_one(int,int);

int printf_two(int,int);

int main()

p=printf_one;

p(1,2);

p=printf_two;

p(3,4);

int printf_one(int a,int b)

printf(「輸出a:

%d,輸出b:

%d\n」,a,b);

int printf_two(int a,int b)

printf(「輸出a:

%d,輸出b:

%d\n」,a,b);

指標的使用

正如拿著名片可以找到某個人一樣,通過指標可以訪問其指向的某塊記憶體區域。為此,c語言引入了間接引用的概念,這需要使用運算子 1.運算子 的作用有兩個 一,宣告 宣告某個型別的指標變數 二,間接引用,通過指標訪問其指向的記憶體區域。double num 3 double pnum pnum 對以上 說...

this指標的使用

this指標 以下 中定義了三個物件a,b,c.因此有三個同樣空間大小分別存放三個物件的資料成員。但是三個物件都同樣呼叫了calcircle 函式.當不同物件的成員函式引用資料成員時,如何保證引用的是指定物件的資料成員呢?在每乙個成員函式中都包含乙個特殊的指標,稱為this指標,它是指向本類物件的指...

指標的使用

指標的應用場景 1.交換兩個變數 2.函式返回多個值,某些值就只能通過指標返回 傳入的引數實際上是需要儲存帶回的結果的變數 3.函式返回運算的狀態,結果通過指標返回 傳入函式的數組成了什麼?函式引數表中的陣列實際上是指標 sizeof a sizeof int 但是可以用陣列的運算子進行運算 陣列引...