指標的使用
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 但是可以用陣列的運算子進行運算 陣列引...