看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 4.9.9.2 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我寫了一個pass by address的練習 在子function中, 將亂數值設到指標所指的位置 再把指標位置回傳給main, 再輸出設好的值 但問題是, 子function和main所輸出的值, 會有幾組不一樣(應該要是一樣) 餵入的資料(Input): 用rand()寫的亂數 預期的正確結果(Expected Output): 假設輸入3, 結果應該是(舉例) 17 0023FF44 11 0023FF48 20 0023FF4C 17 0023FF44 11 0023FF48 20 0023FF4C 錯誤結果(Wrong Output): 17 0023FF44 11 0023FF48 20 0023FF4C 17 0023FF44 2359112 0023FF48 <---這行的值有問題 20 0023FF4C 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/6DPOrrfO 網頁版 #include<stdio.h> #include<stdlib.h> #include<time.h> #define RAN() srand(time(NULL)) int *number(int input,int fake); int main(void) { int input_number=0,initial=0; printf("input the NO. of random:"); scanf("%d",&input_number); int *kk=number(input_number,initial);; int j=0; for(;j<input_number;j++) printf("%d %p\n",*(kk+j),(kk+j)); system("PAUSE"); } int *number(int input,int initial_PTR) { RAN(); int *bb=&initial_PTR; int i=0; for(;i<input;i++) { *(bb+i)=rand()%20+1; printf("%d %p\n",*(bb+i),(bb+i)); } printf("\n"); return bb; } 補充說明(Supplement): 無 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.65.56.150
LPH66:呃, 你根本沒有傳任何位址進去啊... 02/25 17:21
LPH66:再說你的 number 裡拿一個區域變數的位址當陣列用 02/25 17:21
LPH66:沒炸算你運氣好 @@ 02/25 17:22
LPH66:你必須要自行 malloc 出一個陣列再傳進去才行 02/25 17:22
dwaw:感謝樓上 了解! 02/25 17:35
BlazarArc:到底是什麼書在教 pass by address 啊... 02/25 18:41