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

關於 Sizeof 的問題

尚未結案
david629
一般會員


發表:50
回覆:25
積分:15
註冊:2003-02-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-21 11:52:35 IP:61.62.xxx.xxx 未訂閱
程式概略如下: A() { char cBuf[512]; B(cBuf); } B(char cTarget) { int nSize; nSize = sizeof(cTarget); } 請為在B函式裡面我要怎麼寫,才能得知 cTarget 的 Size 是512 因為如果照我目前的寫法,nSize = 4 謝謝大家
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-21 12:25:10 IP:219.68.xxx.xxx 未訂閱
您好: 如果您是使用陣列的話可能必須再多傳一個大小進去才行,如果您是使用malloc的話可以參考如下:
//---------------------------------------------------------------------------    #include 
#include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void b( char *bb)
{
ShowMessage(_msize(bb)-4);
}    void aa(void)
{
char *bb;
bb=(char *)malloc(512);
b(bb);
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
aa();
}
//---------------------------------------------------------------------------
實際求解的方式有很多種,也要看您配置的方式new,malloc,靜態陣列,及有無初值,解法都不盡相同,C 不像Pascal一個length就能解決了。 以下幾篇給您參考 http://delphi.ktop.com.tw/topic.php?topic_id=69774 http://delphi.ktop.com.tw/topic.php?topic_id=63469 http://delphi.ktop.com.tw/topic.php?topic_id=60816 http://delphi.ktop.com.tw/topic.php?topic_id=22634 http://delphi.ktop.com.tw/topic.php?topic_id=69774 http://delphi.ktop.com.tw/topic.php?topic_id=54724 發表人 - supman 於 2005/06/21 12:55:31
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-23 18:35:44 IP:211.22.xxx.xxx 未訂閱
引言: 程式概略如下: A() { char cBuf[512]; B(cBuf); } B(char cTarget)//要寫成 char *cTarget { int nSize; nSize = sizeof(cTarget); }
插個花! 按原來寫法你只是計算指標的大小,而非指標所指陣列的大小,指標在記憶體所佔的大小是 class="code"> #include #include void B(char *cTarget,int size) { printf("指標大小%d\n",sizeof(cTarget)); //should print 4 printf("指標所指陣列大小%d\n",size); //should print 512, index form 0 to 511 system("Pause"); } void A(void) { char cBuf[512]; B(cBuf,sizeof(cBuf)); } void main(void) { A(); } 請參考! -----------------------------------------------
系統時間:2024-10-05 11:17:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!