[問題] 請問一例用指標傳Array的問題

看板C_and_CPP (C/C++)作者 (碳管)時間16年前 (2009/02/27 00:24), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/1
有個程式內容如下,主程式有個 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

02/27 00:34, , 1F
function 內宣告的 variable 是 local variable...
02/27 00:34, 1F

02/27 01:05, , 2F
樓上不對 因為它的陣列是calloc來的
02/27 01:05, 2F

02/27 01:05, , 3F
原PO要不要利用置底貼個完整code上來?
02/27 01:05, 3F

02/27 01:06, , 4F
因為寫成 y = A(n,y) 的話除了小心memory leak以外應該會對
02/27 01:06, 4F

02/27 01:08, , 5F
唔..請了解一下你幹掉了的那個for迴圈對於y=A(n, y)來說
02/27 01:08, 5F

02/27 01:09, , 6F
是要回傳N個值
02/27 01:09, 6F

02/27 01:11, , 7F
哪有N個值@@ 明明就一個指標而已
02/27 01:11, 7F

02/27 01:22, , 8F
i的每一次都要執行n個值(原本迴圈),只是猜測沒有考慮到
02/27 01:22, 8F

02/27 16:20, , 9F
我自己搞清處了,不是不能這樣呼叫 是我index弄錯。
02/27 16:20, 9F
文章代碼(AID): #19fi8vOr (C_and_CPP)
文章代碼(AID): #19fi8vOr (C_and_CPP)