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

影像指標傳入函式與回傳問題

尚未結案
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-20 18:51:22 IP:163.13.xxx.xxx 未訂閱
大家好: 請問副程式如下
Byte** Inverse(int**input,int h,int w)
{
   Byte **output;
   output= new Byte*[h];
   for(int i=0;i    主程式b如下,呼叫上面函式
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  byte **input;
  byte **result;
  result = Inverse(input,256,256);      ...//將result畫在表單上
}
 
1.請問主程式呼叫Inverse()的時候傳入指標變數input,跟我副程式接收的變數 也叫input...這兩個input算是同一個指標嗎? 2.主程式宣告指標變數result存副程式執行後的結果,我要將result秀出來我需不需要對result做new 空間的動作用以儲存傳回的資料? 如下:
result = new byte*[h];
for(int i=0;i    還是我只要宣告byte **result 就可以存取了..    發表人 - smilebye 於 2004/10/20  19:08:42
        
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
richtop
資深會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-20 20:34:44 IP:211.76.xxx.xxx 未訂閱
引言: 大家好: 請問副程式如下
Byte** Inverse(int**input,int h,int w)
{
   Byte **output;
   output= new Byte*[h];
   for(int i=0;i    主程式b如下,呼叫上面函式
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  byte **input;
  byte **result;
  result = Inverse(input,256,256); //input應該有資料指定或讀入的動作。      ...//將result畫在表單上  //要記得釋放result!
}
 
1.請問主程式呼叫Inverse()的時候傳入指標變數input,跟我副程式接收的變數 也叫input...這兩個input算是同一個指標嗎? Inverse(input,..)中的input是一個形式參數(formal variable),因為函式在撰寫時,並不知道會傳入什麼變數,所以暫時先假設一個名稱,接下來再利用這個名稱來進行相關的運算。 所以應該說這兩個變數都是指向相同的位址。 2.主程式宣告指標變數result存副程式執行後的結果,我要將result秀出來我需不需要對result做new 空間的動作用以儲存傳回的資料? 如下:
result = new byte*[h];
for(int i=0;i    還是我只要宣告byte **result 就可以存取了..
其實您在Inverse(.)中,已經有做了配置記憶體的動作了,所以只要利用result去接這配置的記憶體區塊即可。不過您最後要做釋放的動作。
有一個簡單的測試方法:假設input已經存有資料,這時您可試著指定,
result = input;
再分別顯示input與result,就可以知道並不需要再利用new為result配置記憶體。    發表人 - smilebye 於 2004/10/20  19:08:42
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-21 07:21:05 IP:220.135.xxx.xxx 未訂閱
richtop您好: 再請教一下,副程式執行完**input跟**output兩個指標還存在嗎?需不需要delete? 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
richtop
資深會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-21 18:53:58 IP:140.129.xxx.xxx 未訂閱
smilebye 您好:    
引言: richtop您好: 再請教一下,副程式執行完**input跟**output兩個指標還存在嗎?需不需要delete? 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
如果依照您所附的程式來看,在副程式中input是輸入的參數,主要記錄原影像的位址,副程式透過此變數取得影像的資料,實質的記憶內容在副程式外部,所以並不需要釋放它;而output是您轉換後的影像結果,目的就是要傳回給呼叫此invere(.)的函式,所以也不必在invere(.)中釋放它。 所有的釋放動作應該在確定毋需使用時,由主程式中釋放。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-21 20:01:44 IP:220.135.xxx.xxx 未訂閱
謝謝這位大哥指導喔...我懂了 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
系統時間:2024-05-14 14:21:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!