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語言中能不能將整數賦給指標變數
系統記憶體使用是作業系統規定的,如果你希望直接操作記憶體,就必須瞭解系統的記憶體的分配情況,否則造成的損失可能是致命的。你的舉例是不完整的,如果說 point 1 100是非法的,完整語句應該是int point 1 100,之所以非法是因為100不是使用者可以操控的記憶體區域。p 1之所以數合法的...
c語言的巨集定義能不能修改,C語言中怎樣修改巨集定義呢
你定義了。在程式中是不能改變的。只能在定義的地方修改。程式在預處理期間進行值替換。 德眾 比如巨集定義在一開頭定義 define n 10,那麼接下來所有的n都是10,巨集定義一旦定下除非你修改 否則都無法修改巨集定義 成都中公優就業 巨集定義在程式內是不可改變的,只能在定義的地方只能在定義的地方修...
C語言中strcpy函式的引數不能是字元指標嗎
象char p 1234567 這種字串指標指向的是字串常量,常量不能被修改,所以不能象你上面那樣來寫,需要改為char p 1234567 注 也因為同樣的原因,所以象 char p 1234567 p 0 a 或者 p a 這種也都是不行的 陽光的雷咩咩 p指向的是常量字串,不可修改 岔路程式緣...