看板 C_and_CPP 關於我們 聯絡資訊
有個程式內容如下,主程式有個 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