一、指標的概念
指標是記憶體中的位址。
1、語法:型別 * 變數名
這裡的型別是定義了這個指標指向的變數型別。
2、指標的運算子(*和&)
<1>&取位址符
例如:int counta=100;
int * mm;
mm=&counta;
假設counta所在位址是2000,這是候m=2000。
#include
void main()
<2>*返回這個位址的值,與&正好相反。
#include
void main()
3、指標的賦值
#include
void main()
結果:0x0012ff7c
4、指標的運算
指標的++與--是將指標的位址移動所屬變數型別位數。
char 8
int 16
long 32
float 32
double 64
5、指標與陣列
陣列宣告:型別 變數名[長度]
沒有下標的「一維」陣列名就是乙個指向該陣列第乙個元素的指標。
#include
void main()
;int * p1;
p1=x;
cout < }
a、等價關係:
如:char c[10];
c 和 &c[0] 是等價的。
再如:char c[2][3];
c 和 &c[0][0] 是等價的。
*(c+12) 和 &c[1][2] 是等價的。
b、陣列與指標的關係
1>一維陣列的指標
#include
void main()
;int * p1;
p1=x;
cout <<* p1<<"\n";
cout <<* (p1+1)<<"\n";
}2>二維陣列的指標
#include
void main()
;//int x[2]=;
int * p1;
p1=&x[0][0]; //二維陣列給指標不能用"p1=x"這個來賦值,只能是「p1=x[2]」
cout < cout < cout < cout < cout < cout < cout <<* p1<<"\n";
cout <<* (p1+1)<<"\n";
cout <<* (p1+2)<<"\n";
cout <<* (p1+3)<<"\n";
cout <<* (p1+4)<<"\n";
cout <<* (p1+5)<<"\n";
//規律:* (p1+((1*3)+2))
}思考:指標是位址,那麼如果想得到某位址的變數用什麼方法。
二、將引用和指標相比較
引用是變數的別名。
#include
void main()
指標和引用可以達到同樣的效果。
#include
void main()
void funca(int & vala)
void funcp(int * valp)
三、*和&的用途,避免這些符號在使用上發生混淆
1、*的作用:
1>乘號
2>指標定義符號
3>返回某個位址的值
2、&的作用:
1>位運算中的「與」
2>取位址符
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
3>引用<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
<<"\n";
<<"\n";
.h><<"\n";
.h>[1][2]<<"\n";
[1][1]<<"\n";
[1][0]<<"\n";
[0][2]<<"\n";
[0][1]<<"\n";
[0][0]<<"\n";
.h>.h><<"\n";
.h><<"\n";
.h>
<<"\n";
.h><<"\n";
.h>
陣列 指標 引用
一 指標的概念 指標是記憶體中的位址。1 語法 型別 變數名 這裡的型別是定義了這個指標指向的變數型別。2 指標的運算子 和 1 取位址符 例如 int counta 100 int mm mm counta 假設counta所在位址是2000,這是候m 2000。include void main...
陣列 指標 引用 動態陣列
因為我本身是學過這些的,這一遍是複習和總結,不會面面俱到,希望和大家一起分享。1 陣列的建立和初始化 1.1 陣列是一種完全靜態的資料結構,在建立時,陣列的維度必須是乙個在編譯時就可以確定的整形常量表示式 和switch的case後面的表示式那樣 舉個例子 int arr1 2 是合法的,const...
學習指標引用陣列
首先陣列 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...