陣列 指標 引用

2021-09-22 05:10:56 字數 4015 閱讀 6329

一、指標的概念

指標是記憶體中的位址。

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...