什麼是指針?什麼是數組?指針和數組的關係?

什麼是指針?什麼是數組?指針和數組的關係?數組


    形象地講,咱們能夠把計算機的內存看做一條長街上的一排房屋,每一個房間均可以容納數據並經過一個房號來表識。而表示每一個房間房號的值咱們能夠稱爲地址。或許這樣的比喻有侷限性,畢竟真實地計算機內存是以數以萬計的bit位組成。ide

     ⑴初始化: 指針

        ①最簡單的以 int *p 爲例,初始化時內存裏開闢了四個字節的空間。內存

                 ▇▇▇▇it

        ②另外一個聲明 ,如今,咱們有兩個變量,下圖中顯示了後面那個未知內容的內存。table

                     char ch = 'a';class

                     char cp = &a;變量

                ▇→▇▓←(?)引用

              ↗     ↖數據

            (cp)      (ch) 

       ⑵「*」的用法

            ① 定義指針變量是

            ② 對指針變量進行節引用是

 ★注意1:若要實現地址的移動,是p++,而不是*p++

 ★注意2:

              int *p = NULL;   //表明建立一個指針變量,並對它進行初始化。

              *p = NULL;      //將訪問到的內容改成NULL。

 ★注意3:對於數組int a[4],&a與a的區別是什麼呢?&a與a的內容同樣,但&a+1增長了16個字節,而a+1增長了一個字節。緣由是&a是整個數組的地址,而a是數組首元素的地址。


以下表格能夠讓咱們深入地理解指針與數組的區別

a[]={1,2,3,4} char name[]="abcdef" char *name="abcdef"
sizeof(a)=16 sizeof(name[0])=1 sizeof(&name)=4
sizeof(&a)=16 sizeof(&name)=4 sizeof(*name)=1
sizeof(a+0)=4
sizeof(*name)=1 sizeof(&name+1)=4
=4sizeof(*a)=4 sizeof(&name+1)=4 sizeof(name)=4
sizeof(a+1)=4 sizeof(name+1)=4 sizeof(name+1)=4
sizeof(&a)=4 sizeof(name)=7 strlen(name)=6
sizeof(&a[0])=4 strlen(&name)=6 strlen(&name)=6
sizeof(&a[0]+1)=4 strlen(&name+1)=12 strlen(&name+1)=隨機值



指針數組與數組指針的區別

指針數組:用於存儲指針的數組,即數組元素都是指針。

數組指針:指向數組的指針。


表達式 類型
表示 元素表示
int a[4]
整型數組 含有4個元素的整型數組 a[i]
int *a[4] 數組指針 a中元素爲int型指針 *a[i]或*(a[i])
int (*a)[4] 數組指針 指向數組a的指針 (*a)[i]


▲int *:  一次訪問四個字節.

▲char *: 一次訪問一個字節.

相關文章
相關標籤/搜索