定義sort函數(shù)時使用的參數(shù)是指針,需要注意的是這個指針是指向數(shù)組的,數(shù)組的名稱其實就是一個指針,所以p可以做sort的參數(shù)
樺川網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),樺川網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為樺川上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的樺川做網(wǎng)站的公司定做!
立即數(shù)不能轉(zhuǎn)換成指針,因為它不在內(nèi)存中。(int*)2表示從地址0x02開始的int型的地址空間。如果你的函數(shù)形參是指針而實參卻需要傳遞立即數(shù),說明這個函數(shù)編的是有問題的。
如果你一定要傳遞,可以用一個中間變量存放立即數(shù),然后傳遞該變量的地址。
函數(shù)定義和函數(shù)調(diào)用是兩個概念,函數(shù)定義 為f(int *arr),表示參數(shù)是一個整型指針,因此使用該函數(shù)時要傳遞一個地址,如變量int a=0; 調(diào)用函數(shù)f傳遞a的地址時需要寫為f(a);而對于數(shù)組來說,如int b[]=[1,2,3], b本身就是數(shù)組首元素的地址,因此調(diào)用函數(shù)f傳遞數(shù)組首地址需要寫為f(b)。
改成下面代碼看看:
#include?stdio.h
void?abc(int?*i,int?*j)
{
int?m;
m=*i;?//指針變量的值也就是地址不能賦值給一般變量
*i=*j;//*i,*j才是指針變量指向的變量的值
*j=m;???
}
void?main()
{
int?a,b;
int?*pa=a,*pb=b;
printf("請輸入a,b的值:");
scanf("%d,%d",a,b);
abc(pa,pb);??//
printf("a=%d\tb=%d\n",a,b);
}
選D
因為第一個參數(shù)是地址傳遞,fun(b,a);中傳入a字符。*c=*c+1將c的值變?yōu)閎字符。主函數(shù)的值改變。
第二個參數(shù)是值傳遞,所以在函數(shù)中d的值為B字符。但是并不影響主函數(shù)的值,所以主函數(shù)輸出a的值是A。b的值是b。
#include?stdio.h
int?*fmax(int?*,int?*);????/*函數(shù)的聲明和下面的定義參數(shù)類型不一致,應(yīng)該改成指針類型*/
void?main()
{
int?x,y;int?*c,*d;
int?*pmax;
scanf("%d%d",x,y);
c=x;
d=y;
pmax=fmax(c,d);
printf("max=%d\n",*pmax);
printf("max=%d\n",*pmax);
}
int?*fmax(int?*a,int?*b)
{
int?*p;
p=*a*b?a:b;
return?p;
}