似乎有點搞懂了,試說理解如下:
int *x,
char *y;
float *z;
它們所代表的意義就是,編譯器在看到 int *x之後會知道這是一個「指向」一個占有四位元的整數的指標,之所以要讓編譯器知道占幾位元是因為,假設*p指向第一個位址是001234(我這裡的位址是隨便說的,先當成是十位數的好了。),那麼一直到001237的記憶體中的內容就是應該存取的內容。
如果是char *y,那麼編譯器就會從y指到的第一個位址,假設是001000,再加一個位元001001,這裡面的內容是該變數的內容。
這就是為什麼使用指標時,前面也得先定個型別(型態),那是因為指標事實上都只指到第一個位址,後面要取多少憶體的內容得靠前面的型別宣告來確定。
是這樣嗎?
但純以 int *x來說,請問x本身有沒有用到記憶體?如果有用到,是配多少給它?據我google的初步結果,指標占的大小是一樣的,但和作業系統是32 or 64 bits有關。
thanks
|