先來看下使用指標時候要用到的符號的功能:
& 是一元運算子,返回運算元的記憶體位址。
間接定址運算子 *,第二個運算子是間接定址運算子 *,它是 & 運算子的補充。* 是一元運算子,返回運算元所指定位址的變數的值。
再看乙個例項,
#include
using
namespace
std;
int main ()
當上面的**被編譯和執行時,它會產生下列結果:
value of var :3000
value of ptr :0xbff64494
value of val :3000
這些網上的列子很多,也很好理解。下面我談下我對指標的理解。
int* p,那麼p就是乙個指向int型別的指標,宣告指標的時候要這樣宣告。就會有這樣乙個記憶體,這塊兒記憶體裡要指定乙個位址,就是說這塊兒記憶體要存一塊兒位址。這塊兒記憶體為了方便我們用**控制,起個名字叫p,而p只是乙個名字,不占用記憶體裡的任何位元組,佔位元組的是p代表的那塊兒記憶體 ,就好像地球上的乙個人,這個人的名字不占用地球上的任何空間,只有這個人的名字代表的這個人才占用地球上的空間。
給指標p可以這樣賦值:
p=&n,
也可以這樣,在宣告的時候就賦值:
int* p=&n;
用列印語句列印p的值,就是&n。即n的位址。
列印*p,就是n的值。
下面是我的**,對指標的應用:
#include
using
namespace
std;
int num2 = 0;
int num1 = 10;
int num3 = 40;
void swap(int *ptr);
//來區別這行注釋裡的出現的第乙個「指標」。那麼這段函式的操作就是,把指標爸爸傳進來,我要改變
//它的兒子----指標,
class point
private:
int xpos;
int ypos;
};//類point成員函式的實現方式有兩種,在類外用作用域操作符::
void point::setpoint(int x, int y)
int main()
void swap(int *ptr)//我寫了乙個替換乙個變數的函式,經過測試,c++,可以通過指標的操作直接控制一段記憶體裡存的值,這裡
//如果直接寫成(int ptr),只是進行了值的傳遞,並沒有操作記憶體裡的值
//所以,就穿進去乙個位址,位址是可以被乙個指標所指的
//來區別這行注釋裡的出現的第乙個「指標」。那麼這段函式的操作就是,把指標爸爸傳進來,我要改變
//它的兒子----指標,
C 指標的理解
1.記憶體長成啥樣?物理記憶體條由連續排列晶元組構成,在計算機中記憶體模型也被抽象為一組連續的儲存空間,每個空間都能夠儲存若干位元組的資料,每一塊儲存空間也有乙個特定的序號,從0到n。備註 為了便於理解,此處,將記憶體儲存空間橫向排列 實際橫縱排列的意義相同 0000 0001 0002 0003 ...
C 指標的理解
一.c 位址指標的基本概念在計算機中,所有的資料都是存放在儲存器中的。一般把儲存器中的乙個位元組稱為乙個記憶體單元,不同的資料型別所占用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等,在前面已有詳細的介紹。為了正確地訪問這些記憶體單元,必須為每個記憶體單元編上號。根據乙個記憶體單元的編號...
理解C 的指標
本文是新手零基礎學習c 對指標 陣列和結構的理解和筆記,有些凌亂和語無倫次,只是將想法記錄下來,在以後忘了或者概念不清的時候看看。如理解有誤,敬請各位請前輩不吝指教,不勝感激。在c 基礎教程中指標一般被定義為 存放位址的變數。我們可以把指標變數看做乙個向量,它有大小 sizeof 運算子可查位元組 ...