指標在很多時候是與陣列緊密相關的,因為陣列元素的位址通常是連續的,這為指標的操作提供了方便。
1、陣列元素的位址關係
一維陣列的名字實際上就是指向這個陣列的第乙個元素的指標,也就是這個陣列的起始位址。例如
int a[3]=;
int p1=a;
int p2=&a[0];
a 既是陣列的名字,也是整個陣列 a 的起始位址,也就是第乙個陣列元素 a[0] 的存放位址。p1==p2
例:使用下標獲取陣列元素以及通過位址獲取陣列元素的區別與聯絡
// 使用下標獲取陣列元素以及通過位址獲取陣列元素的區別與聯絡
#include;
using
namespace
std;
void main()
cout
cout
說明:- words+i 是第 i+1 個元素存放的位址
- *(words+i) 表示的是第 i+1 個元素的位址所存放的資料值
- * words +i 是對位址 words 進行 * 運算,即取出 words[0] 的值,再加上 i
結果:
2、字元指標
char *pschar;
pschar="information string";
執行以上兩行**時,首先定義乙個字元型指標變數,然後找出記憶體中存放常量字串「information string」 的起始位址,並把這個位址賦值給指標變數 pschar。這個賦值是允許的,因為字串常量「information string」本身是有自身的儲存空間的,系統為它分配了19個字元的儲存空間,並且系統在賦值時,已經將字串常量轉換成起始位址形式。
下面這種賦值是不被允許的:
char *pschar;
pschar='a';
例:將乙個字串常量 information 複製到字元陣列中,並輸出這個字元陣列
// 將乙個字串常量 information 複製到字元陣列中,並輸出這個字元陣列
#include;
#include;
using
namespace
std;
void main()
cout
結果:
結果分析:
在上面程式中,將information 複製的字元陣列 chars 中時,沒有加結束字元『\0』,所以後面出現亂碼且長度不是定義的字元陣列的長度。
修改後的程式**為:
#include;
#include;
using
namespace
std;
void main()
cout
結果:
C 034 指標與一維陣列
陣列像乙個指標 訪問陣列中元素,使用陣列與使用指向這個陣列的指標是等價 num 1 p 1 num 1 p 1 num 1 的本質 num 1 指標 整數 指標中的值 sizeof 所指向的資料型別 整數 陣列不是乙個指標 1 sizeof array sizeof pointer 當乙個陣列賦值乙...
指標與陣列(一) 指標認知
一 定義與初始化 1.如何理解指標?1 指標是變數。2 指標是乙個位址,指向的是個型別。3 指標指向的是位址,位址指向的是內容。4 指標的指標,是面對於指標的變數。5 指標型別的位元組長度由作業系統決定 32位作業系統為4位元組,64位作業系統為8位元組 2.定義指標的幾種規範 int p 重在表示...
指標系列六(指標與二維陣列)
指標與二維陣列 int array 4 5 printf sizeof int d n sizeof int printf array p n array printf array 1 p n array 1 上面程式證明 array 1,位址加了20,每乙個整形四個位元組,相當於跨越了五個位元組 ...