關於關鍵字sizeof的問題 |
尚未結案
|
yinweli
一般會員 ![]() ![]() 發表:3 回覆:5 積分:1 註冊:2003-10-24 發送簡訊給我 |
|
李國維
高階會員 ![]() ![]() ![]() ![]() 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
|
yinweli
一般會員 ![]() ![]() 發表:3 回覆:5 積分:1 註冊:2003-10-24 發送簡訊給我 |
|
李國維
高階會員 ![]() ![]() ![]() ![]() 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
yinweli:如果真如你所我說.是下sizeof(&變數名, sizeof(型態))這各程式碼
就很奇怪ㄌ.就是為什麼"結果跟原來的sizeof使用方法出來的結果是一樣的"
我舉各例來說吧
struct { int iTest[10]; AnsiString sTest[10]; }TestBase; //sizeof(TestBase) 所得到ㄉ值是80 //sizeof(&TestBase,sizeof(TestBase)) 所得到的值會是4,因為sizeof的result 是 integer如果方便的話.可否麻煩將.那一行指令POST出來. 彼此教學相長一下 |
yinweli
一般會員 ![]() ![]() 發表:3 回覆:5 積分:1 註冊:2003-10-24 發送簡訊給我 |
引言: yinweli:如果真如你所我說.是下sizeof(&變數名, sizeof(型態))這各程式碼 就很奇怪ㄌ.就是為什麼"結果跟原來的sizeof使用方法出來的結果是一樣的" 我舉各例來說吧struct { int iTest[10]; AnsiString sTest[10]; }TestBase; //sizeof(TestBase) 所得到ㄉ值是80 //sizeof(&TestBase,sizeof(TestBase)) 所得到的值會是4,因為sizeof的result 是 integer如果方便的話.可否麻煩將.那一行指令POST出來. 彼此教學相長一下 |
李國維
高階會員 ![]() ![]() ![]() ![]() 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
引言: 原來那部份的程式碼 RECT HP_RECT, m_Mp_Rect, SP_RECT, m_Sp_Rect, m_Fp_Rect; sizeof(&HP_RECT, sizeof(RECT)); sizeof(&m_Hp_Rect, sizeof(RECT)); sizeof(&MP_RECT, sizeof(RECT)); sizeof(&m_Mp_Rect, sizeof(RECT)); sizeof(&SP_RECT, sizeof(RECT)); sizeof(&m_Sp_Rect, sizeof(RECT)); sizeof(&SP_RECT, sizeof(RECT)); sizeof(&m_Fp_Rect, sizeof(RECT));請恕我才疏學淺.這幾行程式.好像沒什麼意義ㄌ.. 如果是要清空RECT變數的資料.語法好像也不是這樣. 如果要得到RECT的大小.語法好像也不是這樣. 真的很好玩... |
richtop
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
yinweli 您好: 經查詢BCB的確沒有sizeof(?,?);此函式。
不過如果您將它以#define巨集方式宣告,的確可騙過compiler喔!
|
yinweli
一般會員 ![]() ![]() 發表:3 回覆:5 積分:1 註冊:2003-10-24 發送簡訊給我 |
引言:引言: 原來那部份的程式碼 RECT HP_RECT, m_Mp_Rect, SP_RECT, m_Sp_Rect, m_Fp_Rect; sizeof(&HP_RECT, sizeof(RECT)); sizeof(&m_Hp_Rect, sizeof(RECT)); sizeof(&MP_RECT, sizeof(RECT)); sizeof(&m_Mp_Rect, sizeof(RECT)); sizeof(&SP_RECT, sizeof(RECT)); sizeof(&m_Sp_Rect, sizeof(RECT)); sizeof(&SP_RECT, sizeof(RECT)); sizeof(&m_Fp_Rect, sizeof(RECT));請恕我才疏學淺.這幾行程式.好像沒什麼意義ㄌ.. 如果是要清空RECT變數的資料.語法好像也不是這樣. 如果要得到RECT的大小.語法好像也不是這樣. 真的很好玩... |
yinweli
一般會員 ![]() ![]() 發表:3 回覆:5 積分:1 註冊:2003-10-24 發送簡訊給我 |
引言: yinweli 您好: 經查詢BCB的確沒有sizeof(?,?);此函式。 不過如果您將它以#define巨集方式宣告,的確可騙過compiler喔!這我也想過...不過目前手上的程式碼中都沒有發現sizeof的巨集... 我想有可能是被包在Lib裡了吧 回頭我再去找找看 |
李國維
高階會員 ![]() ![]() ![]() ![]() 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
yinweli你好:
sizeof可以接受多個參數型態。在多參數時,實作上是把sizeof當成一個函數,並且傳回空間最大參數的size值。這時用法和一般函數相同,不能傳給他type。(像sizeof(char,int)是不合法的。但sizeof(int)可以)
至於你提到的sizeof(Var1,sizeof(Type2))其實就等同於sizeof(Var1,size_t);其中的Type2是完全沒用的。因為裡面的單參數sizeof不論是什麼Type都是回傳一個size_t型態的大小值,之後就只被當成一個size_t的type來看。這個寫法應該是誤用吧??
正確寫法應該是
sizeof(Var1,Type2());
產生一個Type2的暫時變數,交給sizeof判斷。 發表人 - pwipwi 於 2004/07/24 03:50:52
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |