c語言指針作為函數參數

第二行的函數聲明有問題
int *fmax(int*,int*);

㈡ C語言用指針作函數參數

選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。

㈢ C語言形參指針

1 這兩種形式沒有任何區別,定義的都是char* 類型的指針,不過有的書上建議採用*和變數相靠近專的寫法,這屬樣可以避免連續聲明時的錯誤,例如:char *ptr,a;可以明顯知道一個是指針的變數一個是char類型的變數。
2 二維數組實際可以聲明成指向指針的指針。這樣在接受形參的時候,就可以用一個雙重指針來接受。
void f(int **a) //怎麼寫?
{
}
int a[100][100];
f(a);

3 返回值是一個指針就可以實現了,不過返回的地址一定要是在堆空間申請的空間,或者是在靜態區的空間。不要返回在函數棧中的地址,以防止在退出函數時,棧空間釋放,成為幽靈內存。

char* fun(){
char* ptr ="abc";
return ptr;
}

㈣ c語言指針的指針做函數參數

定義sort函數時使用的參數是指針,需要注意的是這個指針是指向數組的,數組的名稱其實就是一個指針,所以p可以做sort的參數

㈤ c語言中指針作為形參,代碼如下:

你要用*去解引用,這樣才能改變指針指向內存的值。
你的swap函數寫的有問題,正確的寫法有人給了。
至於為什麼*x,*y的值沒有改變,因為你交換的是2個形參的值,雖然你傳入的是指針,但是你沒有把它們當成指針來用,最後的結果跟傳非指針值是一樣的。
如果想真正改變實參的值,就必須交換指針指向的內存,而不是單純交換指針變數本身。形參是通過堆棧傳遞的,只有用類似 *x = 1;這樣的語句操作指針指向的內存,才能影響到實參,否則實參的值是不會改變的。
其實最好的方式就是去VS里調試運行,仔細觀察運行過程,就能比較清晰地了解指針。單純的理論是站不住腳的,拉出來溜溜就一清二楚了。
想對你能有幫助。

㈥ C語言字元串指針作函數參數

實參數組p中的內容沒有改變
因為fun函數僅僅是改變了參數s指針的指向,使其指向了局部變數數組a而已