A. c語言中指針作為函數參數的問題。
O(∩_∩)O哈哈~。在函數聲明和定義時Fun(int p1,int p2)是不是表示它的參數是兩個int型的整數。Fun(int* p1,int* p2)則使表示它的參數是兩個指針類型的。定義和聲明時的變數只是代替符,其它的運算符號與類型符號加起來才是參數類型。你如果覺得不好理解,那麼在寫的時候就把int 和*放在一起(int*),這就是參數類型。
B. c語言中用一個函數指針作為另一個函數的參數,該怎麼解決
首先需要聲明函數指針的類型(下例子中的typedef int (*fpFunt)(int a,int b),再定義某個函數(下例中的Add),在其參數列表中使用該函數指針類型,同時需要定義另一函數(下例中的fpAdd,注意該函數形式要和fpFunt一致,本例子中是返回一個整數,兩個整型參數)作為實參用。這里在手機上使用易歷知食軟體內的微C程序設計來編程,舉個兩個數相加的例子,代碼如下圖:
C. C語言指針作為函數參數
#include<stdio.h>
int*fmax(int*,int*);/*函數的聲明和下面的定義參數類型不一致,應該改成指針類型*/
voidmain()
{
intx,y;int*c,*d;
int*pmax;
scanf("%d%d",&x,&y);
c=&x;
d=&y;
pmax=fmax(c,d);
printf("max=%d ",*pmax);
printf("max=%d ",*pmax);
}
int*fmax(int*a,int*b)
{
int*p;
p=*a>*b?a:b;
returnp;
}
D. C語言的指針作函數參數
改成下面代碼看看:
#include<stdio.h>
voidabc(int*i,int*j)
{
intm;
m=*i;//指針變數的值也就是地址不能賦值給一般變數
*i=*j;//*i,*j才是指針變數指向的變數的值
*j=m;
}
voidmain()
{
inta,b;
int*pa=&a,*pb=&b;
printf("請輸入a,b的值:");
scanf("%d,%d",&a,&b);
abc(pa,pb);//
printf("a=%d b=%d ",a,b);
}
E. c語言中用指針變數做函數參數有什麼意義
看你的需要了,有時不用指針作為參數達不到你要的效果,比如一個swap()函數。
int
swap(int
a,int
b)
{
int
tmp;
tmp=a;
a=b;
b=tmp;
}
如果你想調用該函數交換兩個變數的值,在主函數中輸出,那是不可能的。比如這樣調用:
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
你認為會輸出2
1嗎?錯!還是會輸出1
2的。因為傳入swap()函數的只是x,y的拷貝,而不是它們自身。
如果要真正達到交換的目的,就要用指針傳值。這樣定義函數:
void
swap(int
*a,int
*b)
{
int
tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
但是給函數傳值時要注意,指針是指向地址的,所以參數要是地址,即需要給變數取地址。
int
x=1,y=2;
swap(&x,&y);
printf("%d
%d",x,y);
這樣就是輸出2
1了!
F. ★C語言 指針作函數參數
首先說明一下,你這段代碼差一個}
應該是
#include
void fun(char *c,int d)
{
*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
}
main()
{
char b='a',a='A';
fun(&b,a);
printf("%c,%c\n",b,a);
}
在fun中的輸出,可以說明是對兩個參數作了增一操作*c=*c+1; 說明是對指針指向的內容作+1操作,會影響函數外c指向的內空變化;而d=d+1隻是表示對d這個參數作+1操作,不會對函數外的實際參數變化。
所以第一次輸出的兩個數是b,B 而第二次輸出的應該是b,A.
%e表示按科學記數法輸出浮點數,用在這里是錯誤的。應該是%c.
所以正確的答案應該是b,B,b,A
G. C語言指針變數的賦值和做函數的參數
1、指針變數的賦值,分為定義時賦值(初始化)和單獨賦值,如:
int x ;
int * px=&x ; //定義時賦值,也稱初始化,注意這里的*是跟隨int的,即變數px是int *類型變數! 實際上的賦值語句是px=&x ;
int * py ;
py=&x ; //單獨賦值,將py指向x
*py=10 ; //這里的*,是引用指針中的數據操作符,*跟隨的變數必須是指針類型變數,否則會出錯! *py就是x,這里相當於x=10;
2、指針變數作為函數的參數時,子函數可以通過指針引用實參地址中的數據,達到修改實參地址中的數據。如:
#include <stdio.h>
void func( int a, int b, int *pmax )
{
if ( a>b ) *pmax=a;
else *pmax=b ;
}
void main()
{
int a=2,b=3,max=0;
func(a,b,&max ); //這里將變數max的地址傳遞到子函數,子函數中通過該地址,可以修改max的值,達到子函數結束後,max能帶回運算結果的效果。
printf("max=%d\n", max );
}
H. c語言指針的指針做函數參數
定義sort函數時使用的參數是指針,需要注意的是這個指針是指向數組的,數組的名稱其實就是一個指針,所以p可以做sort的參數
I. C語言用指針作函數參數
選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。
J. c語言指針變數作函數參數問題
這是因為在C語言中,主調函數到子函數的參數傳遞都只是單向的。為了要把在子函數中的操作效果帶回到主調函數中,就只有利用指針(指向主調函數中的變數),直接把主調函數中變數的值進行修改。