首先,指標,就相當於乙個位址,指標變數就是拿來存放指標所指向另一變數的位址;定義乙個指標變數需要說明:指標型別,指標變數名。例:int *p,a;p=&a;而
陣列,包括陣列型別和陣列名還有陣列長度(陣列長度只能是常量);陣列有一維陣列和多維陣列。例:int a[10];內的必須是常量。 那
究竟什麼是陣列指標呢?
顧名思義,就是陣列的指標。其中,對陣列來說,陣列名就是陣列在記憶體存放的首位址。因為指標變數是拿來存放另一變數的位址,所以指標變數可以存放陣列的位址,也可以存放陣列元素的位址。所以引用陣列或陣列元素可以以使用指標變數。int *p,a[10];p=a(p指向陣列a的0號元素);/*因為陣列名相當於首位址*/。 當
指標指向陣列時,還可以做一些指標運算。
(1)例:int *p,a[10];p=a;p++;/* p+1,它指向a[1] */;指標變數每增加1,位址位元組值得增量就等於基型別位元組數。(2)兩個指標之間還可以相減,得到乙個整數,該整數等於二者之間相差的元素個數(兩者的位址位元組值之差除以基型別位元組數)注意:兩個指標之間不能進行加、乘、除等算術運算。(3)兩個指標型別還可以比較運算(<、<=、>、>=、!=、==),但指標型別不同不能比較,比較時是用它們的位址值進行比較。(4)c語言中設定了「null」稱為空指標,可以賦給任何指標型別的變數而且可以和任何型別指標做「==和!=」比較,不能做(<、<=、>、>=)比較。 如何
通過指標訪問陣列元素呢?
例如:int a[10],*p=a;//定義陣列和指標變數並讓指標p指向陣列的首位址。
int i;
其中,表示式p[i]和*(p+i)和*(a+i)和a[i]相等,都表示陣列a中i號元素。注意:p+i或a+i則表示b[i]的位址&b[i]。/* &為取位址符 */;還有a是符號常量,不能給a賦值。
c語言對位址不做越界檢查,使用指標時自己控制好位址的邊界。
C語言學習之陣列
一維陣列的定義方式 資料型別 陣列名 整型常量表示式 注意 方括號中只能是常量表示式,不能使用變數。常量表示式的值表示陣列最多能存放的元素的個數,也稱為陣列的大小 陣列所佔總位元組數 sizeof 資料型別 陣列大小 int k 5 float c k 不合法,k是變數 define m 20 in...
C語言學習筆記 指標 指標陣列與陣列指標
指標陣列 是乙個陣列,陣列元素為指標 陣列指標 是乙個指標,指向陣列的指標 例如 int p1 5 int p2 5 對於語句int p1 5 因為 的優先順序要比 要高,所以 p1 先與 結合,構成乙個陣列的定義,陣列名為 p1,而 int 修飾的是陣列的內容,即陣列的每個元素。也就是說,該陣列包...
C語言學習之指標詳解
要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解乙個複雜型別,要理解複雜型別其實很簡單,乙個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總結了一下其原則 從變數名處起,根據運算子優先順序結合,一步一步分析.下面讓我們先從...