線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1235
推到 Plurk!
推到 Facebook!

請問動態一維宣告

尚未結案
kmp
一般會員


發表:17
回覆:51
積分:13
註冊:2004-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-08 10:26:36 IP:211.74.xxx.xxx 未訂閱
hi~各位大人 : 您們好,I am a very new novice at programming.    excuse me, I asked a very simple question about 1 dimension related http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55770.    The code in the following .It would be error in /* with blue */.
//-----------------------------------------------------
int* matrix_multip( int *A , int rA , int cA ,
                   int *B , int rB , int cB )
{
  if( cA == rB )
  {
    for( int i=0 ; i < rA ; i   )
    for( int j=0 ; j < cB ; j   )
    {
       AxB[i j*cB]= 0 ;
/*
I wonder how to declare the initiation of 1 dimension with
dynamic size.
我不知怎動態一維宣告,其大小是變動的,依傳進來的參數而定o    [C   Error] image_lib.cpp(218): E2451 Undefined symbol 'AxB'
[C   Error] image_lib.cpp(225): E2451 Undefined symbol 'AxB'
[C   Error] image_lib.cpp(227): E2451 Undefined symbol 'AxB'
*/
    }
    for( int i=0 ; i < rA ; i   )
    for( int j=0 ; j < cB ; j   )
    {
        for ( int k=1 ; k < cA ; k   )
        {
          AxB[i j*cB]= AxB[i j*cB]  A[i k*cA]*B[k j*cA] ;
        }
     } return AxB ;
   }// return AxB ;
}
發表人 - taishyang 於 2004/09/08 11:07:08
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-08 11:11:23 IP:203.70.xxx.xxx 未訂閱
kmp您好    動態陣列就是使用指標的方式 int *AxB = new int[100]; 用完記得 delete [] AxB;    陣列初始化可以使用2種方式 1.ZeroMemory(AxB,sizeof(int)*100); 2.memset(AxB,0,sizeof(int)*100);    參考看看 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~ 發表人 -
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
kmp
一般會員


發表:17
回覆:51
積分:13
註冊:2004-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-08 15:19:13 IP:61.62.xxx.xxx 未訂閱
hi~ENIX007 :               您好,謝謝您的回答指教>< face="Verdana, Arial, Helvetica">引言: kmp您好 動態陣列就是使用指標的方式 int *AxB = new int[100]; ^^^^^^^^^^^size要動態, 老實說,我要作影像處理,傳進來的影像大小不一定, 所以我要動態宣告size 用完記得 delete [] AxB; 陣列初始化可以使用2種方式 1.ZeroMemory(AxB,sizeof(int)*100); 2.memset(AxB,0,sizeof(int)*100); 請問這是ZeroMemory( int* , int ); memset( int* , int ); 這兩函數是 BCB裡面有的嗎? 所以可以直接拿來用? 用來宣告初始值? 發表人 - kmp 於 2004/09/08 15:30:08
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-08 16:05:05 IP:211.76.xxx.xxx 未訂閱
kmp你好:     可以試著用STL中的vector~    
    vector array_of_int;    array_of_int.resize(1000); 
array_of_int[999] = 999;    
用完後會在他的Scope範圍內會自動釋放記憶體,另外記得
include和using namespace std;
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-08 16:18:53 IP:203.70.xxx.xxx 未訂閱
kmp您好  
引言: 動態陣列就是使用指標的方式 int *AxB = new int[100]; ^^^^^^^^^^^size要動態, 老實說,我要作影像處理,傳進來的影像大小不一定, 所以我要動態宣告size
這就是動態的方式唷,只要這樣寫: int size = 100; int *AxB = new int[size]; ZeroMemory(AxB,sizeof(int)*size); 或 memset(AxB,0,sizeof(int)*size); size是自己設定的,或是從函式傳進來的,看您自己發揮 另外, > 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
kmp
一般會員


發表:17
回覆:51
積分:13
註冊:2004-07-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-09 21:53:55 IP:61.62.xxx.xxx 未訂閱
hi~ENIX007 :             您好,很高興謝謝您的解答>< face="Verdana, Arial, Helvetica">引言: 這就是動態的方式唷,只要這樣寫: int size = 100; int *AxB = new int[size]; 您這裡寫的和pwipwi大大寫的一樣動態宣告array大小, 一用指標,一用array. vector array_of_int; array_of_int.resize(1000); array_of_int[999] = 999; 可能我的資質魯鈍,有點覺 朝三暮四,以為您之前寫的就不是,sorry. ZeroMemory(AxB,sizeof(int)*size); 或 memset(AxB,0,sizeof(int)*size); size是自己設定的,或是從函式傳進來的,看您自己發揮 <> >請問這裡是不是這 > > 另外,> 謝謝,我剛想查 > < face="Verdana, Arial, Helvetica"> Best Regard kmp 發表人 - kmp 於 2004/09/09 22:04:34
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-10 00:56:34 IP:211.76.xxx.xxx 未訂閱
kmp你好:     對不起,我不小心多刪了一重複的文篇,以下是你那篇文章所提的內容: 目前手上只有一本書有稍稍提到vector,我剛看一網頁不錯, http://www.jjhou.com/programmer-2-stl.htm 之前我老師規定使用template 也是屬於這類概念o 請教,如上那網頁,我並沒有看到malloc , memory allocation, 定義於stdlib.h , char* malloc(unsigned int size) , 我覺這用意跟我想要陣列動態宣告大小很像,請問有沒什差別? 配置記憶體的手法有很多,在C語言的時代,用的是malloc系列的function。到了C plusplus,則引入了new和delete的手法,且為了可以和C回朔,malloc還是可以在C plusplus裡使用。不過在C plusplus還是推薦用new與delete。 到了STL加入C plusplus後,直接用new的人愈來愈少,因為有不少用STL的容器就可以做到了,而且做得更有效率。到現在一般推薦,配置小物件用STL的容器來代借,配置大的物件就直接用new。 希望有回答你的問題。
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-10 02:33:45 IP:203.70.xxx.xxx 未訂閱
kmp您好  
引言: for( int i=0 ; i < rA ; i ) for( int j=0 ; j < cB ; j ) { AxB[j i*cB]=0; 請問這裡是不是這 ZeroMemory(AxB,sizeof(int)*size); 或 memset(AxB,0,sizeof(int)*size); 意思?]
是的,這2個函式都是做陣列(指定記憶體區段)初始的動作... 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
kmp
一般會員


發表:17
回覆:51
積分:13
註冊:2004-07-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-09-12 23:22:47 IP:140.127.xxx.xxx 未訂閱
pwipwi 和 ENIX007                      您們好,很高興謝謝您們精闢的解釋,                     讓我知道我不知道得很多 最近因開學搬到宿舍,比較晚才出現
系統時間:2024-05-19 3:10:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!