間接訪問:通過內存單元編號((地址),以及數據所佔字節數訪問內存中的數據.
主要內容:指針變量指針與數組,指針與字符串
數據的存儲:
其中字節是最小的存儲單元,一個字節稱爲一個存儲單元(內存單元),不同數據類型所佔的存儲空間不等
爲了正確的訪問內存單元,每個內存單元都有一個編號.內存單元的編號稱爲地址
內存單元的數據是今天得重點內容
訪問方式:
直接訪問和間接訪問
直接訪問:
直接訪問內存空間的內容 例如 :a = 20;b = 2 * a;
間接訪問:
通過內存單元編號以及數據所佔字節數訪問內存中的數據
間接訪問在程序中隨處可見,指針是間接訪問的常用方式.
1.指針:
指針是內存中的數據的內存編號
程序中的每個數據都有地址
通過&符號取變量的地址,例如:a = 20; printf(“%p”, &a);//打印內存地址
指針變量
指針變量是C語言中存放內存編號的量.
指針變量的定義:
int *p =NULL;//NULL恆等於0
與普通變量不同的是.定義指針變量的時候.前面需要加*
指針變量的類型修飾符表示:該指針變量保存的指針對應的存儲區域是一個整形(或者其他類型)的存儲區域.這裏指針變量有別於普通變量所以變量名前加一個*來區分
使用*操作符,訪問內存編號裏面對應的內容
int a = 5;
int *p = NULL;
p = &a;
printf(“%d”, *p);
指針變量是存放數組的變量
*和&配套使用
*是取值運算符,可以通過*+變量名的形式訪問指針變量存儲的指針對應的存儲空間的內容
&p 指針p本身的地址
指針的重指向
int a = 3, b = 5;
int *p = &a;
p = &b;
*p = 5;
//指針變量的賦值意味着重指向
指針變量的重指向,本身就是對指針變量做重新賦值的操作,因爲指針變量並不脫離變量的範疇,在程序序運行期間可以對一個已經定義的指針變量做重新賦值,讓它保存另一個存儲空間的地址,這時候之前所做保存的地址就會被覆蓋掉
2.指針的類型
指針變量是存放內存地址的變量
因爲內存地址只跟操作系統有關,所以指針變量所佔的內存大小取決於操作系統位數(32位系統指針佔四個字節)
不同類型的指針區別:主要作用 指針自增運算,指針移動字節數多少,以及用*取值時,取多少字節數據.
注意事項:
int *p = NULL;此時的*只起到修飾的作用,告訴編譯器,p是個指針.
數組
在C語言中,數組是構造類型,系統會分配一段連續空間來存儲數組的全部數據,數組名代表數組元素的首地址(第一個元素的內存地址)
3.指針與數組
.指針可以當數組名使用
p[1] = 3;
恆等於 a[1];
恆等於*(p + 1);
恆等於*(a + 1);
(1)所佔空間不同
指針所佔空間至於操作系統位數有關
數組所佔空間與元素個數有關,數據類型有關
(2)數組名是常量地址
數組名不能重指向(不能賦值)
指針可以重定向
4.指針與字符串
C語言用字符數組保存字符串;
指針數組
存放指針的數組稱爲指針數組.
注意可以通過指針來修改字符數組,但不可以修改常量字符串.<span style="font-size:18px;">
</span></span></h2>
指針簡述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.