請問動態一維宣告 |
尚未結案
|
kmp
一般會員 發表:17 回覆:51 積分:13 註冊:2004-07-24 發送簡訊給我 |
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 發送簡訊給我 |
|
kmp
一般會員 發表:17 回覆:51 積分:13 註冊:2004-07-24 發送簡訊給我 |
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 發送簡訊給我 |
|
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
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 發送簡訊給我 |
hi~ENIX007 :
您好,很高興謝謝您的解答>< face="Verdana, Arial, Helvetica">引言:
這就是動態的方式唷,只要這樣寫:
int size = 100;
int *AxB = new int[size];
您這裡寫的和pwipwi大大寫的一樣動態宣告array大小,
一用指標,一用array. vector
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |