網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論

回覆
 
主題工具
  #1  
舊 2014-05-28, 04:07 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設 有關C語言的指標

有關指標,我想打個比方來說,請教一下各位先進,這樣理解是否正確?

int *x;
int &y;

在這裡我們用儲物箱來比喻記憶體(內存)。

&y就是指例如第幾號的箱子,而*x則是指第幾號箱子裡的東西是什麼?

這樣比喻對嗎?

再來,int 的屬性是表示已預先留了 4 byte的記憶體空間給 x or y,是嗎?例如一個箱子代表一個byte,int *x 是表示我已留了四個箱子給x,將來等它指定給某位址的陣列後(即幾號到幾號的儲物箱),會將某陣列裡面的內容copy一份出來放進x的箱子裡。還是根本沒有,x只是告訴你將來要去某個位址的記憶體(箱子)去用裡面的內容?x本身不占用任何箱子?

而假設
char *x;
char string[]="hello world!";
x=string;
請問,此時x裡是什麼東西?

希望我說的話大家能看懂我想表達的東西

thanks
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2014-05-28, 08:21 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

int *x;(x是指向int变量的指针变量,就是门牌号;*x是x变量所指的存储单元)
int y;
&y(这个是指针变量y的地址,就像门牌号)
也可以理解为:x(&y)就是指例如第幾號的箱子的号码,而*x則是指第幾號箱子裡的東西是什麼
x=&y就把y的地址赋给x了,*x里就是y的值了。

int 的屬性是表示已預先留了 4 byte的記憶體空間給 x or y,是嗎
只是规定可以指向int变量的单元,但开始并不指向任何实际单元,只有赋值(例如x=&y)后才指向实际单元。

而假設
char *x;
char string[]="hello world!";
x=string;
請問,此時x裡是什麼東西?
此时x里是"hello world!"的地址,就是门牌号
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #3  
舊 2014-05-28, 08:29 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

引用:
作者: yumi 查看文章
請問,此時x裡是什麼東西?
此时x里是"hello world!"的地址,就是门牌号




many thanks!
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #4  
舊 2014-06-10, 06:13 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

似乎有點搞懂了,試說理解如下:
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
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #5  
舊 2014-06-10, 08:25 PM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

x本身当然占用记忆体,如果是32位系统,一般占用4字节;如果是64位系统,通常占用8字节。
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #6  
舊 2014-06-10, 08:27 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

引用:
作者: yumi 查看文章
x本身当然占用记忆体,如果是32位系统,一般占用4字节;如果是64位系统,通常占用8字节。
謝謝。
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
回覆

主題工具

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 08:54 PM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.