1.array[num]
2.*(array+num)
3. *(p+num)
陣列名是陣列的首位址,故可以像指標那樣來操作取值
但是不能像指標那樣對位址進行操作,類似p++(array++)
陣列名歸根結底是常量,是代表乙個位址(指標是乙個變數)所以沒法執行array++這樣的操作
陣列和指標表示
date+2==
&date[2]
;//相同的位址
*(date+2)
==date[2]
;//相同的值
int *p是可以指向int型別位址的指標
記憶體中是以位元組劃分的,乙個位元組代表乙個編號,這個編號就是位址。
定義多個指標要int *p,*q(都要加)
指標四要素
指標本身的型別
int
*p的型別是int
*
指標所指向變數的型別
int *p所指向變數的型別是int
指標的大小
根據編譯器,32位機為4byte,64位機為8byte
指標的值
指標變數裝的是它指向物件的位址
在指標前加*運算子可以得到該指標指向物件的位址所儲存的值
指標+乙個整數或自加,偏移的是該型別的位元組大小,比如int
*型別的指標加一偏移的是4byte。
int*p的型別是int
*int data[
5]的型別是int[5
]
'++'
'--'的優先順序和'*'一樣
在執行*p++這條語句的時候結合性是從右往左的,先++再取值
eg:int buf=
;int
*p=buf;
printf
("%d"
,*p++);
//這裡的值為1
printf
("%d"
,*p)
;//這裡的值為2
'*'的優先順序高於'+'
*(date+2)
;//date第三個元素的值
*date+2;
//date第乙個元素的值+2
陣列,指標陣列,陣列指標的學習理解
本文將以如下定義的陣列及指標為例,對陣列,指標陣列,陣列指標進行說明。這是看完書後總結的,所謂好記性,不然爛部落格,想將這些總結記下,以便需要時進行重溫。如有理解上的錯誤,望大家指出。int a 3 3 int p0 3 int p1 4 int p3 int p4 1 二維陣列 a 二維陣列名 a...
學習指標引用陣列
首先陣列 a 10 的名字就代表乙個位址,是陣列第乙個元素的位址,即 a 0 int p p a 就是將指標指向陣列a的第乙個元素 或者int p a 與int p a 0 是一樣的 p 1的意思不是將位址直接加1,而是代表同一陣列中下乙個元素的位址,即 a 1 也可以用a 1表示。所以 p 1 a...
指標陣列的學習
本章主要講解的內容是如何通過指針對二維陣列進行遍歷 首先,講解一下二維陣列,int a 3 3 二維陣列的數學概念就是乙個3 3階的矩陣形式,而實際中,二維陣列在記憶體中是一維線性排列的 我們先定義乙個指向a的指標p,int p 4 a。其中的優先順序高於 如果我們不帶上括號,就會變成 int p ...