作者Carbontube (碳管)
看板C_and_CPP
標題[問題] 請問一例用指標傳Array的問題
時間Fri Feb 27 00:24:24 2009
有個程式內容如下,主程式有個 y array,輸如function A裡做計算,
結果為yy array
:
int n = 100;
double *y;
y = (double*)calloc(n,sizeof(double));
for(int i=0;i<n;i++){
y[i] = double(i);
}
// 沒宣告 yy的array大小
double *yy;
for(int i= 0;i< 20;i++){
yy = A(n,y);
for(int j=0;j<n;j++){
y[j] = yy[i];
}
}
:
yy是到AA裡面才做array大小宣告
double *A(int L, double *y)
{
double *yy;
yy = (double*)calloc(n,sizeof(double));
//下面就一些計算
}
縣在問題為,在原程式呼叫A函式 ,若不宣告 yy,而直接改寫成
y = A(n,y);(這樣就可略去下面的y[i]=yy[i]這迴圈) 則算出來的結果會全部不正確
請問為何會如此呢,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.67.33
→ yehsd:function 內宣告的 variable 是 local variable... 02/27 00:34
推 LPH66:樓上不對 因為它的陣列是calloc來的 02/27 01:05
→ LPH66:原PO要不要利用置底貼個完整code上來? 02/27 01:05
→ LPH66:因為寫成 y = A(n,y) 的話除了小心memory leak以外應該會對 02/27 01:06
推 snowlike:唔..請了解一下你幹掉了的那個for迴圈對於y=A(n, y)來說 02/27 01:08
→ snowlike:是要回傳N個值 02/27 01:09
推 LPH66:哪有N個值@@ 明明就一個指標而已 02/27 01:11
→ snowlike:i的每一次都要執行n個值(原本迴圈),只是猜測沒有考慮到 02/27 01:22
→ Carbontube:我自己搞清處了,不是不能這樣呼叫 是我index弄錯。 02/27 16:20