指標的本質是乙個變數,也需要占用一定的空間一般為四個位元組不論其指向的型別。指標用來儲存記憶體位址的值。通過指標我們能做到不通過變數來改變變數的值。
*號的意義:
在指標宣告時,代表宣告的變數為指標變數。int i=10;int * p=&i;
在指標使用時,表示取指標所指向的位址中的值。 *p=12;
另外指標宣告時不能不賦初值,會產生野指標,對程式有很大隱患。最常用的初值為null。
其實 * 號像一把鑰匙,通過它能開啟乙個記憶體空間讀出裡面的值。&p為p指標變數的位址。列印**(&p)為12;
指標可以被函式當作形參變數,當乙個函式體內部要改變實參的值時要用指標當形參,呼叫函式時要用改變的變數位址做實參。普通的函式呼叫是把實參複製到形參。如果形參是乙個十分複雜的資料型別時,我們要用傳值的方式。
陣列是一系列相同型別變數的集合,int a[5] a 為陣列第乙個元素的起始位址,a[數字]表示陣列a中的元素,不是元素的名字。陣列中的元素沒有名字。
陣列的位址和陣列首位址相同,但是概念是不一樣的。陣列的位址要用&取位址符來得到。
陣列名可以看作是乙個常量指標(不能作為左值),在表示式中陣列名只能作為右值使用,只有在作為sizeof和取位址符的引數時不能當作常量指標,而是整個陣列。
陣列名和指標是不一樣的,如果定義是指標,引用是陣列,那麼列印出來一定是錯的。指標內存放的是指向一塊記憶體的位址。陣列名為陣列變數的首位址後面的變數位址是相連的。對於指標編譯器要做乙個定址,對陣列則不用。
這樣就能列印出hello world 了
深入理解指標
指標 是乙個特殊的變數 它裡面儲存 的數值被解釋成為記憶體裡的乙個位址 指標也是一種資料型別,並且也是有值的。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 ...
深入理解指標
指標 是乙個特殊的變數 它裡面儲存 的數值被解釋成為記憶體裡的乙個位址 指標也是一種資料型別,並且也是有值的。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 ...
深入理解指標
指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標做例子 例一 1 in ptr 2 char ptr...