指針本質是內存地址。語法:類型 * 變量名,類型指定指針指向的變量類型。
& 取地址符:int *mm = &counta;* 解引用:int p = *mm; 獲取地址對應的值。指針可相互賦值(複製地址)。指針 ++/-- 會按所指類型大小移動地址(如 int 移 4 字節,double 移 8 字節)。
一維數組名(不帶下標)即指向首元素的指針。int x[3]={1,2,3}; int *p1=x; 等價於 p1=&x[0]。二維數組同理:int x[2][3] 中 x 等價於 &x[0][0],*(x+1) 等價於 &x[1][0]。
引用是變量別名,定義時必須初始化且不可改變綁定對象。兩者均可實現函數參數傳遞修改實參:
void funca(int &vala) { vala=200; }
void funcp(int *valp) { *valp=500; }
| 符號 | 作用 |
|---|---|
| * | 乘法運算符 / 指針定義符 / 解引用(取地址值) |
| & | 位與運算 / 取地址符 / 引用聲明符 |
理解這些符號在不同上下文中的含義,能有效避免編程混淆。