[問題] 怎麼副函式中呼叫另一個副函式的位址or值

看板C_and_CPP作者 (辜)時間15年前 (2010/07/15 19:29), 編輯推噓0(0011)
留言11則, 4人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 在第一個副函式中跑出來的pA 需要在第二個副函式中使用 不知道怎麼處理 希望得到的正確結果: 能在第二個副函式中得到第一個副函式的資料 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VS C++ 有問題的code: (請善用置底文標色功能) void Read(); //讀檔 void Read() { FILE *f2=fopen("aaa.dat","rb"); if(f2==NULL) { printf("開檔錯誤"); exit(1); } fseek( f2, 0, SEEK_END); Long = ftell(f2)/sizeof(struct person); printf("有幾筆資料:%d\n",Long); person* pA = new person[Long]; fseek( f2, 0, SEEK_SET); fread(pA,sizeof(struct person),Long,f2); for(i=0;i<size;i++) { printf("%s \t",pA[i].name); printf("%d \t\n",pA[i].year); } return &pA; fclose(f2); } void Del(); //把比對到的資料刪除 void Del() { int CK; FILE *f3=fopen("bbb.dat","wb"); for(i=0;i<size;i++) //要改Long { CK=strcmp(word,*pA[i].name); printf("%d\n ",CK); if(CK!=0) { printf("%s \t",pA[i].name); printf("%d \t\n",pA[i].year); fwrite(&pA[i],sizeof(struct person),1,f3); } } fclose(f3); } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.178.67 ※ 編輯: dann1 來自: 140.138.178.67 (07/15 19:29)

07/15 19:32, , 1F
pass過去
07/15 19:32, 1F

07/15 19:33, , 2F
請問怎麼pass?
07/15 19:33, 2F

07/15 19:36, , 3F
當function的參數傳, 請見任何教C語言的書籍函數章節.
07/15 19:36, 3F

07/15 19:36, , 4F
另外, read()回傳型態為void, 函數裡 return &pA; 是想?
07/15 19:36, 4F

07/15 19:37, , 5F
又, return以後func就結束回傳了, return後才fclose??
07/15 19:37, 5F

07/15 19:40, , 6F
請問是要看傳參數,傳值,傳址? 哪一個呢
07/15 19:40, 6F

07/15 19:41, , 7F
return &pA;是剛剛看書想要回傳的 是錯的@@
07/15 19:41, 7F

07/15 20:29, , 8F
還是不會@@,傳遞的話需要在主程式呼叫嗎?還是在副函式中呼叫
07/15 20:29, 8F

07/15 20:29, , 9F
就可以了呢
07/15 20:29, 9F

07/15 21:55, , 10F
你得把一個指標值傳來傳去 和你把整數傳來傳去是一樣的方法
07/15 21:55, 10F

07/16 01:10, , 11F
恩恩~我會了 謝謝
07/16 01:10, 11F
文章代碼(AID): #1CFl4RoH (C_and_CPP)