指標的應用場景
1.交換兩個變數
2.函式返回多個值,某些值就只能通過指標返回
傳入的引數實際上是需要儲存帶回的結果的變數
3.函式返回運算的狀態,結果通過指標返回
傳入函式的數組成了什麼?
函式引數表中的陣列實際上是指標
sizeof(a)=sizeof(int *)
但是可以用陣列的運算子進行運算
陣列引數
以下四種函式原型是等價的:
int sum(int *ar, int n)
int sum(int *,int)
int sum(int ar, int n)
int sum(int ,int)
陣列變數是特殊的指標
陣列變數本身表達位址,所以
int a[10]; int *p=a;
但是陣列的單元表達的是變數,需要用&取位址
a==&a[0]
運算子可以對陣列做也可以對指標做:
p[0]<==>a[0]
*運算子可以對指標做,也可以對陣列做
*a=25
陣列變數是const的指標,所以不能被賦值
int a -->int * const a
指標與const
指標是const 表示一旦得到某個變數的位址,不能在指向其他的變數
int * const q = &i ;
* q =;26;
q++;
表示不能通過這個指標去修改那個變數(並不能使得那個變數成為const)
const int * p= &i;
*p = 26;error
i = 26;ok
p=&j ;ok
轉換
1.總是可以把乙個非const的值轉換成const的
const陣列
const int a=
陣列變數已經是const的指標了,這裡的const表明陣列的每個單元都是const int
所以必須通過初始化進行賦值
保護陣列值
因為把陣列傳入函式時傳遞的是位址,所以函式內部可以修改陣列的值
為了保護陣列不被函式破壞,可以設定引數為const
int sum (const int a, int length);
指標的使用
正如拿著名片可以找到某個人一樣,通過指標可以訪問其指向的某塊記憶體區域。為此,c語言引入了間接引用的概念,這需要使用運算子 1.運算子 的作用有兩個 一,宣告 宣告某個型別的指標變數 二,間接引用,通過指標訪問其指向的記憶體區域。double num 3 double pnum pnum 對以上 說...
指標的使用
指標的使用 1.注意 一定要在對指標應用解除應用操作符 之前,將指標初始化為乙個確定的位址。例子 include int main int a int p p 10 正確使用方法 p a p 10 c 中還可以使用 new來給指標確定位址。例子 include int main int a 4 ne...
this指標的使用
this指標 以下 中定義了三個物件a,b,c.因此有三個同樣空間大小分別存放三個物件的資料成員。但是三個物件都同樣呼叫了calcircle 函式.當不同物件的成員函式引用資料成員時,如何保證引用的是指定物件的資料成員呢?在每乙個成員函式中都包含乙個特殊的指標,稱為this指標,它是指向本類物件的指...