c語言中檔案指標能不能作為引數傳遞

2021-06-25 14:47:34 字數 2392 閱讀 2122

1樓:匿名使用者

1.指標完全可以作為函式的引數進行傳遞,其實在c中,陣列作為引數傳遞,跟指標作為引數傳遞都很類似的,指標傳的是該指標指向的地址,而陣列引數則是將該陣列的首地址傳遞過去。

2.檔案指標

在c語言中用一個指標變數指向一個檔案,這個指標稱為檔案指標。通過檔案指標就可對它所指的檔案進行各種操作。定義說明檔案指標的一般形式為:

file *指標變數識別符號;

其中file應為大寫,它實際上是由系統定義的一個結構,該結構中含有檔名、檔案狀態和檔案當前位置等資訊。在編寫源程式時不必關心file結構的細節。在使用檔案時,需要在記憶體中為其分配空間,用來存放檔案的基本資訊,給結構體型別是由系統定義的,c語言規定該型別為file型,其宣告如下:

typedef struct

file;

3.例如:

file *fp;

表示fp是指向file結構的指標變數,通過fp即可找存放某個檔案資訊的結構變數,然後按結構變數提供的資訊找到該檔案,實施對檔案的操作。習慣上也把fp稱為檔案指標。

2樓:匿名使用者

當然可以,檔案指標本質上就是一個結構體指標而已,當然可以做函式引數

3樓:

你要知道,所謂的指標也就是一個地址,一個數,一個2進位制碼

4樓:匿名使用者

file abc(flie *fp)?

//你這是函式名嗎?返回值型別沒有file型別,有file*

5樓:匿名使用者

當然可以,許多庫函式不都是需要檔案指標的嗎?如fread

c語言用指標傳遞引數的問題 5

6樓:匿名使用者

#include

main ()

至於第二段**只是通過主函式呼叫另一個全域性函式來作,結果一樣。

不過你第二段**中#include卻寫錯了。

補充一點:如果要用指標或引用來交換變數數值,**卻不是像上面的用法。

就本問題來說:因為雖然交換了指標但指標所指向的變數卻絲毫沒有變化。

指標儲存了變數的地址,交換變數的值,必須用解引用後的指標才能辦到:

如:void swap1(int *x,int *y)void swap2(int *p,int *q)進一步說:這就是深複製和淺複製的區別。

7樓:匿名使用者

第一題,m=1,n=2所以先輸出了1和2,然後p指標指向m,q指標指向n。在r=p;p=q;q=r;進行指標值交換後,p指向了n的地址,q指向了m的地址。所以輸出了2,1。

第二題,第一次輸出的是p和q指向的物件,輸出3和5。

隨後傳入fun函式的是x和y的地址指標,但是隻是交換了指標值,這並不影響到主函式中的指標p和q的值。所以輸出來的數依然是3和5。

8樓:匿名使用者

第一題p=&m;// p存放變數m的地址,或者說p指向m

q=&n; // q存放變數n的地址

r=p; //r存放指向m的地址

p=q; //p存放指向n的地址

q=r; //q存放指向m的地址,結果p和q通過r交換了所指物件,p和q的內容改變了

第二題:

p=&x;q=&y; //p指向x,q指向y

fun(p,q); //p存放的內容(x的地址)通過函式呼叫傳遞給變數a,則a也指向x,同理b指向y

c=a;a=b;b=c; //修改變數a,b,c的內容,而這三個變數屬於函式fun,返回時被放棄

fun(&x,&y); //與上面用p和q呼叫的實質完全相同,函式中不操作變數指向的內容,而僅倒騰變數本身,對主程式中的x和y沒有影響,也沒改變p和q的內容

9樓:weida愛問

指標傳遞引數例項:

void fun1( int *p ) //此函式接受一個指標p,也就是說p是別人傳過來的一個int型別的地址

main()

希望能幫到你,望採納哈!

10樓:西瓜燉牛排

&x, &y是取這兩個變數的地址,作用空間在main函式裡。然後函式呼叫把這兩個變數的地址傳遞到函式myadd中,在函式中的*a和*b分別是引用地址指向的變數值,等於是取到了x,y本身的值。在myadd中直接操作*a可以改變x的值。

通俗來說因為&x,&y表示的是x,y的地址。所以傳遞的是地址。意思就是說,函式可以通過地址引用變數。

11樓:匿名使用者

很簡單的

實參裡面寫的是地址,形參裡寫的是指標,比如int *p=1; 有一個函式定義為f(int *p) 呼叫這個函式時用f(p) 這樣子

再舉個例子 如果int a=1; 呼叫f時要寫 f(&a) 這樣子 就這麼傳引數

c語言中陣列名作為函式引數,C語言中,陣列名作為函式引數,屬於什麼傳遞,為什麼?

因為你從主函式傳過來之後,是給了a 10 啊,與arrlen無關啊,而且在呼叫函式時是會給區域性變數重新分配記憶體,但這也只是說原先那個記憶體消失了,那麼記憶體裡面的值也會消失了,就會重新執行rrlen sizeof a 4 函式定義和宣告的引數應該是 intoid check struct snm...

C語言浮點型資料能不能取餘,C語言中,一個整型對一個浮點型取餘是怎樣運算的?

可以,但不能用操作符 而要用庫函式fmodf fmod或fmodl。因為 是整型取餘操作符,要求兩邊都是整型數才行,結果也是整型 fmodf用於float型變數操作,fmod用於double型變數操作,fmodl用於long double型變數操作。以下以fmod舉例 include stdafx....

c語言中指標作為實參使用swap函式的問題

c語言中形參與實參的關係是 形參是實參的值副本。無論引數的型別是什麼,傳回遞到子函式中的形參只是答實參的值。所以,在改變形參變數自身的值時,是與實參無關的。換句話說,形參的改變不會影響到實參。但,如果引數型別是指標型別,則可以通過對指標變數所指向的地址中的資料進行修改,達到改變實參地址中的資料目的。...