Discussion:
[問題] double陣列
(时间太久无法回复)
Mr.東
2007-04-01 03:46:53 UTC
Permalink
double cc[]=new double[n];
//a b兩個都是數值random的方陣
//c為存放結果的方陣
for( i=0;i<n;i++)
{
for( j=0;j<n;j++)
{ ccc=0.0;

for( k=0;k<n;k++)
{

ccc+=a[i][k]*b[j][k];
}

cc[j]=ccc;
}

c[i]=cc;
}

我想請問一下
為甚麼這樣跑到最後
c[i]全部都會變成最後一個運算完的cc
也就是c矩陣的每一列都會變成最後被運算出來的a[n-1][k]*b[n-1][k]

感謝不盡><

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.183.226
骨頭
2007-04-01 05:02:56 UTC
Permalink
※ 引述《sorryla (Mr.東)》之銘言:
: double cc[]=new double[n];
: //a b兩個都是數值random的方陣
: //c為存放結果的方陣
:
: 我想請問一下
: 為甚麼這樣跑到最後
: c[i]全部都會變成最後一個運算完的cc
: 也就是c矩陣的每一列都會變成最後被運算出來的a[n-1][k]*b[n-1][k]
:
: 感謝不盡><
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 220.136.183.226
: → windf4:c[i]=cc 意思是指派cc的位址給c[i]哦 04/01 12:14

應該要說是把c[i]的ref指向 cc ,
讀取c[i] 就等同於cc當時所指向的目標。

call by ref

: → sorryla:所以他不是複製....謝謝大大 04/01 12:33
: → sorryla:那請問大大有沒有METHOD可以直接整個陣列複製過去? 04/01 12:41

使用 clone() 可以達到這個目的。

環境是 JDK 1.5

我不是很確定如果是1.4.2的話clone()要不要轉型, :(
要的話就把cc.clone()轉型成 double[]就行了。

double cc[]={0,0,0,0,0};

double[] copy_cc=cc.clone();
cc[0]=1;
System.out.println(copy_cc[0]);


另外一點意見,雖然今天ptt開放推文,但是文章既然轉信出去了,
就請不要用站內推文討論問題,這對站外使用者不禮貌。:)

--
 String temp="relax"; | Life just like programing
 while(buringlife) String.forgot(temp); | to be right or wrong
 while(sleeping) brain.setMemoryOut(); | need not to say
 stack.push(life.running); | the compiler will
 stack.push(scouting.buck()); | answer your life
 stack.push(bowling.practice()); | Bone everything

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.27.68

Loading...