Re: [問題] 雙重指標

看板C_and_CPP (C/C++)作者 (New CygnusX)時間15年前 (2009/02/18 23:27), 編輯推噓2(2013)
留言15則, 3人參與, 最新討論串2/7 (看更多)
※ 引述《hardman1110 (硬漢)》之銘言: : #include <stdio.h> : #include <string.h> : void input(FILE **pfp1, FILE **pfp2) : { : char string[20]; : printf("請輸入文章檔名:"); : gets(string); : *pfp1 = fopen(string,"r"); : printf("輸入測試的字串:"); : gets(string); : *pfp2 = fopen(string,"r"); : } : void output(int count) : { : printf("出現了%d次\n",count); : } : int process(FILE *fp1, FILE *fp2) : { : int count=0; : char st[20], word[20]; : fscanf(fp2,"%s",word); : printf("Searching word=%s\n",word); : while(fscanf(fp1,"%[^., ]",st)!=EOF) : { : if(strcmp(st,word)==0) : { : count++; : } : fscanf(fp1,"%[., ]",st); : } : return count; : } : void main(void) : { : FILE *fp1, *fp2; : int count; : input(&fp1, &fp2); ^^^^ ^^^^^ 他想要對fp1跟fp2做input的引數 且傳入參數方法為call by address(pointer) 這裡如果懂得話 看input function裡面就應該懂了 : count=process(fp1, fp2); : output(count); : } : -------------------------------------------------------------------- : 這個程式目的是在一篇文章中搜尋關鍵字,我想問的是為什麼在input裡要用 : **pfp1這種雙重指標? 在process裡開檔就好了不是嗎? 這樣做有什麼用意嗎? -- 我的露天拍賣: http://tinyurl.com/6z4rw7 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.147.174

02/19 00:04, , 1F
Call by Address不就是Call by Reference嗎?_?
02/19 00:04, 1F

02/19 00:05, , 2F
其實這個Call by Pointer應該是Call by Value吧@_@"
02/19 00:05, 2F

02/19 00:14, , 3F
call by ref function prototype void f(int &a);
02/19 00:14, 3F

02/19 00:14, , 4F
呼叫 f(a);
02/19 00:14, 4F

02/19 00:16, , 5F
call by Pointer是不是call by value是看對哪個變數存取
02/19 00:16, 5F

02/19 00:16, , 6F
XD 原來func有換掉 XD 話說, C現在可以用C by Ref嗎??
02/19 00:16, 6F

02/19 00:17, , 7F
正式的說法裡沒有call by pointer這種講法吧??
02/19 00:17, 7F

02/19 00:18, , 8F
原po那個code的寫法是標準的call by value才對....
02/19 00:18, 8F

02/19 00:19, , 9F
by Addr, by Ptr之類的講法, 很容易搞錯說....@_@"
02/19 00:19, 9F

02/19 00:19, , 10F
call by XXX是要看 你對哪個變數做存取
02/19 00:19, 10F

02/19 09:54, , 11F
樓上 不是吧~ 就只有三種呀 call by addr. val. & ref
02/19 09:54, 11F

02/19 09:55, , 12F
沒有call by pointer這樣的說法吧~
02/19 09:55, 12F

02/19 09:59, , 13F
http://0rz.tw/8Ro5r 可以看這篇 有圖 有觀念~
02/19 09:59, 13F

02/19 10:00, , 14F
這邊應該是call by addr. 傳入pointer的addr.
02/19 10:00, 14F

02/19 11:32, , 15F
我推文中筆誤 我是要說by addr. 我是覺得addr跟ptr是一樣
02/19 11:32, 15F
文章代碼(AID): #19d2ZfST (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 7 篇):
2
15
1
20
2
9
3
20
文章代碼(AID): #19d2ZfST (C_and_CPP)