什么是指针?什么是数组?指针和数组的关系?
什么是指針?什么是數組?指針和數組的關系?
? ? 形象地講,我們可以把計算機的內存看作一條長街上的一排房屋,每個房間都可以容納數據并通過一個房號來表識。而表示每個房間房號的值我們可以稱為地址。或許這樣的比喻有局限性,畢竟真實地計算機內存是以數以萬計的bit位組成。
? ? ?⑴初始化:?
????????①最簡單的以 int *p 為例,初始化時內存里開辟了四個字節的空間。
? ? ? ? ? ? ? ? ?▇▇▇▇
????????②另一個聲明 ,現在,我們有兩個變量,下圖中顯示了后面那個未知內容的內存。
?????????????????????char ch = 'a';
?????????????????????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 *: 一次訪問一個字節.
轉載于:https://blog.51cto.com/10798301/1720066
總結
以上是生活随笔為你收集整理的什么是指针?什么是数组?指针和数组的关系?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android监视返回键
- 下一篇: 纹理mag filter不能取GL_XX