陣列與指標 初學者視角

2021-10-24 00:18:32 字數 2064 閱讀 2569

先通過一組例項來了解一下,會更加形象。

#includeusing namespace std;

int main()

; for(int i=0;i<5;i++)

cout<<" &a:"<<&a<<'\n';

cout<<" a:"《輸出結果為:

a[0]的位址為:0x70fdf0

a[1]的位址為:0x70fdf4

a[2]的位址為:0x70fdf8

a[3]的位址為:0x70fdfc

a[4]的位址為:0x70fe00

&a:0x70fdf0

a:0x70fdf0

&a[0]:0x70fdf0

a[0]:1 

通過比較可以看出,在數值上a,&a,&a[0]是相等的 ,但還是有區別的,要清楚它們各表示什麼,才能更好的理解後面的知識

下面這個和上面的要區別一下,因為說法很相似,重點放在書寫形式上,這樣會更好理解

a[0]表示陣列的首元素 ,相同a=2;這和普通陣列一樣;

舉個栗子,更容易理解;

int (*p)[5];根據符號優先順序  () > > *  ,所以先看()內的,而()裡面是指標,*和p構成指標的定義,int修飾構成陣列的定義,陣列在這裡並沒有實際的變數名,可以看成是乙個有虛擬的變數名 ;所以就表示定義了乙個指標p指向乙個含有5個元素的一維陣列(即陣列指標)通俗的講:這個陣列裡面儲存的元素都是位址,位址,位址,

#include#include//呼叫setw()函式要用到此函式庫,下面會詳細解釋的

using namespace std;

int main()

,(*p1)[3]=&a,*p2;//定義了乙個一維陣列a,乙個指向陣列a的指標p1,乙個野指標(不知道指向**)

p2=&a[2];//把a[2]的位址賦p2

cout//int *p[3];//的優先順序必*高,p與結合構成乙個陣列的定義,陣列名為p

//int *修飾的是陣列p的內容,即陣列的每個元素(p[0],p[1],p[2])都是指標   

執行結果為:

p1:0x70fdf0

*p1:0x70fdf0

p2:0x70fdf8

*p2:4

訪問一維陣列:

#includeusing namespace std;

int main()

; int (*p)[3]=&a; //這是陣列指標,別看用了&,但是*p還是位址

cout<<"a:或&a[0]:"《執行結果:

為什麼p+1比&a大呢,後面再做解釋

重點理解指標指向的是誰

includeusing namespace std;

int main(), ,

};

int (*p1d)[2]=b; //也可以寫成(*p1d)[2]=&b[0],p1d為陣列指標 ,指向首元素b[0]

cout<<"p1d:"《我所要講的都在注釋**的注釋裡面,看**,看注釋,然後自己執行**

以下給出乙個三維陣列c 

#includeusing namespace std;

int main();

//空間立體來的,不太好表示,這裡我就直接賦值了

cout<<"先來看第乙個元素: "《執行結果:                   先來看第乙個元素:

&c  0x70fe00

c[0]:0x70fe00=c[0][0]:0x70fe00

&c[0][0][0]:0x70fe00

現在看第二個元素:

0x70fe00=0x70fe10=0x70fe10

0x70fe10 

簡單分析下,c[x][y][z]就是長方體一樣,c[0][0][0]=1但是c[0][0]卻表示位址,就跟一維陣列一樣,int a=;

a=1,但是a卻表示位址一樣,和三維陣列的表示方法一樣,讀者可以自行聯想。

指標(初學者)

1 位址和指標的概念 1 位址 記憶體區的每乙個位元組都有乙個編號,這就是 位址 如果在程式中定義了乙個變數,在對程式進行編譯時,系統就會給這個變數分配記憶體單元。在c語言中,對變數的訪問有兩種方式 直接訪問和間接訪問。直接訪問 如 a 5 間接訪問 如 scanf d a 呼叫函式時,把變數a的位...

初學者談初學者學html

這是乙個段落。解釋一下就是 html 與 html 之間的文字是描述網頁。head 與 head 之間的文字是文件的元資料。title 與 之間的文字是文件的標題。body 與 body 之間的文字是可見的頁面內容,是文章的主體部分。h1 與 h1 之間的文字被顯示為乙個大標題。p 與 p 之間的文...

初學者理解C語言指標

1.指標定義 指標是由能存放乙個位址的一組儲存單元 通常是兩個或四個位元組 構成。c語言程式設計 指標是乙個值為記憶體位址的變數 或資料物件 正如char型別變數的值是字元,指標變數的值是位址。c primer plus 感覺第二種更容易理解,指標是變數 和char int類似。3.間接定址 間接引...