乙個變數有位址,乙個陣列包含若干個元素,每個陣列元素都在記憶體中占用儲存單元,他們都有響應的位址。既然指標可以指向變數,也就意味著它也可以指向陣列元素,即把某個元素的位址放到乙個指標變數中。所以所謂陣列元素的指標就是陣列元素的位址。定義乙個有10個元素的整形陣列,int a[10];定義乙個指向整形變數的指標變數,int *p;若p=&a[0]或p=a;則代表將a[0]元素的位址賦給了指標變數p。其中值得注意的是a代表的不是整個陣列,而是帶表陣列名,c中規定陣列名代表把陣列中第乙個元素的位址,因此a等同與&a[0];只是形式上的不同而已。在明白了基礎概念之後,我們進一不看看陣列名和指向陣列的指標變數的應用。
將陣列名作為函式引數的時候,在實參和形參之間的對應關係有以下四種:
1.形參和實參都用陣列名,如
main() f(int x.int n)
}由於形參陣列名接受了實參陣列首元素的位址,因此在函式呼叫期間,形引數組與實參陣列共用一段記憶體空間。
2.實參用陣列名,形參用指標變數,如
main() f(int *x,int n)
}x為指向整形變數的指標變數,函式開始執行是x指向a[0],通過x值的變化,可以指向a陣列的任一元素。
3.實參形參都用指標變數,如
main() f(int *x,int n)
}實參p和形參x都是指標變數,p先指向陣列a,即p的值就是&a[0],然後將p的值傳遞給x,x的值也是&a[0],因此通過x的改變就可使x指向a的任一元素。
4.實參為指標變數,形參為陣列名,如
main() f(int x,int n)
}實參p為指標變數,它指向a[0],形參為陣列名x,但在c中將它做為指標變數來處理,所以a[0]的值也傳給了x,因此也可以理解為形引數組x和a陣列共用同一段記憶體單元。
指標算數運算在陣列中的應用
一 指標算數運算 我們已經了解到,指標加上乙個整數的結果是另乙個指標。但問題是,它指向 呢?如果將乙個字元指標加1,運算結果產生的指標指向記憶體中的下乙個字元。float佔據的記憶體空間不止1個位元組,如果將乙個指向float的指標加1,將會發生什麼,它會不會指向該float值內部的某個位元組呢?接...
C指標(1) 指標在陣列中的應用(程式講解)
include int main 結果 str china beijing fujian pstr指向str 6 b include int main void 結果 str china beijing fujian pstr str china beijing fujian str 0x7fffd...
一些指標在陣列中的小例子
include int main void int p int a 1 int 表示強制轉化為整形指標 a 1 將一維陣列看成二維陣列,即p指向二維陣列第1行第0列,未賦值,即為0 printf d,d p 1 輸出為0和5 include int main void int p1 int a 1 ...