全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:759
推到 Plurk!
推到 Facebook!

指標的疑惑 * 與&

尚未結案
fatming
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-11 23:04:01 IP:218.162.xxx.xxx 未訂閱
假設條件如下 void aaa(int ab[24]) { int abd[24]; memcpy(abd,&(ab),sizeof(abd));// 疑惑1 ab[0]=-1; ab[5]=-1; memcpy(abd,&(*(ab)),sizeof(abd));// 疑惑2 } int a[24]; int b[96]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); aaa(a); aaa(b); 小弟在傳入ab值之後對於 memcpy(abd,&(ab),sizeof(abd));// 疑惑1 memcpy(abd,&(*(ab)),sizeof(abd));// 疑惑2 所得到abd值不一樣感到有些疑惑 一個是立刻依此址得開始取值 &(ab) 跟&(*ab) 從其指向的地方開始取值 這兩開始點應該是一樣的才對 不知道小弟什麼地方搞錯了 請各位先進指教謝謝
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-12 01:17:55 IP:211.76.xxx.xxx 未訂閱
fatming 您好:    底下說明供您參考!    
//---------------------------------------------------------------------------
AnsiString msg;    void aaa(int ab[24])
{
  int abd[24];      msg.printf("ab=%X\n&&(ab)=%X\n", ab, &(ab));      memcpy(abd,&(ab),sizeof(abd));// 疑惑1
  ab[0]=-1;
  ab[5]=-1;      msg.cat_printf("&&(*(ab))=%X", &(*(ab)));      memcpy(abd,&(*ab),sizeof(abd));// 疑惑2      ShowMessage(msg);
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a[24];
  int b[96];      msg.printf("a=%X\n&&(a)=%X\n", a, &(a));
  ShowMessage(msg);      memset(a,0,sizeof(a));
  memset(b,0,sizeof(b));
  aaa(a);
  aaa(b);
}
/*
理論上陣列變數的位址也就是其所存內容的起始位址,這是系統賦予的不能改變。
但是當您將陣列當成函式參數傳入時,其實這些形式參數會被存放在堆疊中,也就是說,
在呼叫函式aaa(int ab[24])時,會先在堆疊中空出一個足夠存形式參數ab的空間,
而且ab所存的值才是傳入陣列的起始位址。
所以此刻所謂的"&ab"不再是原先傳入陣列的起始位址,而是堆疊中存放ab的位址。
因此,您自然就會得到不同的結果。
*/
//---------------------------------------------------------------------------
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
fatming
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-12 19:57:20 IP:218.162.xxx.xxx 未訂閱
小弟忘記使用函式傳入指標時 函式內的所抓到該傳入指標指向值的值雖然是一樣 但是在位址上是不同樣的兩個東西雖然該指向的地方是一樣 所以指向的值一樣 感覺好像在繞口令... 總之多謝大大的指點 感謝感謝m(_ _)m
系統時間:2024-06-14 21:18:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!