gaohu0926所言正確,我具體補(bǔ)充三點(diǎn)。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供金安網(wǎng)站建設(shè)、金安做網(wǎng)站、金安網(wǎng)站設(shè)計(jì)、金安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、金安企業(yè)網(wǎng)站模板建站服務(wù),10年金安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
1、函數(shù)GetItemPrice聲明為:
int GetItemPrice(int price[],FILE *file)
即返回值為int類型。而實(shí)際上,該函數(shù)返回price,此變量為int *類型,因此出現(xiàn)類型不匹配的錯(cuò)誤信息:“ 'int ' differs in levels of indirection from 'int *'”。
2、如果需要獲得樓主所說(shuō)的“想把PRICE的整個(gè)數(shù)組的值返回”,那么在調(diào)用函數(shù)GetItemPrice時(shí)使用如下代碼:
GetItemPrice(price, stokefile);
而不是price[Nitems] = GetItemPrice(stockfile);
并且在函數(shù)GetItemPrice中,返回0,而不是price。
3、函數(shù)GetItemPrice中尚存在一個(gè)小BUG:
fscanf(file,"%d",price[i]);
應(yīng)該寫為:
fscanf(file,"%d",price[i]);
你好!
將函數(shù)采用指針的形式返回平均值
注意看后面的注釋
#includestdio.h
int?main()
{
float?*student_aver(float?array[3][3]);???//?改成指針的形式輸出?
float?score[3][3];
float?*a;
int?i,j;
printf("請(qǐng)輸入學(xué)生各科的成績(jī):");
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%f",score[i][j]);
printf("每個(gè)學(xué)生的平均成績(jī)分別為:");
a=student_aver(score);????????????????//?指針?a?接收函數(shù)的返回值?
for(i=0;i3;i++)??????????????????????//?打印出平均值?
printf("%.2f?",a[i]);
return?0;
}
float?*student_aver(float?array[3][3])????//?改成指針的形式輸出
{
int?i,j;
float?sum,a[3];
for(i=0;i3;i++)
{
sum=0;
for(j=0;j3;j++)
sum=sum+array[i][j];
a[i]=sum/3;
???}
return?a;?????????????????????????????//?輸出數(shù)組?a?
}
在C語(yǔ)言中,無(wú)法直接返回一個(gè)數(shù)組,但是可以通過(guò)返回對(duì)應(yīng)類型指針的方式,返回?cái)?shù)組。
在大多數(shù)情況下,一維數(shù)組和一維指針是可以通用的。
比如,定義一個(gè)函數(shù),申請(qǐng)一定長(zhǎng)度的整型動(dòng)態(tài)數(shù)組,其長(zhǎng)度用參數(shù)傳入,并將結(jié)果返回。如出錯(cuò),返回空指針NULL。 代碼可以寫成如下形式:
int?*int_array_create(int?n)//參數(shù)n為數(shù)組元素個(gè)數(shù)
{
int?*r;?
if(n=0)?return?NULL;//參數(shù)錯(cuò)誤
r?=?(int?*)malloc(sizeof(int)*n);//申請(qǐng)內(nèi)存空間,大小為n個(gè)int長(zhǎng)度。
return?r;//返回得到的整型數(shù)組的指針。?
}
這個(gè)不需要返回個(gè)數(shù)組!
你只要在主函數(shù)中,這樣調(diào)用 order(a,count); 就行了!
其中a是數(shù)組名,count是數(shù)組大小。就是把數(shù)組的地址傳給函數(shù),
這樣在排序函數(shù)中操作的就是主函數(shù)中的數(shù)組了
另外兄弟,我發(fā)現(xiàn)你的排序算法好像是錯(cuò)誤的吧,給你一個(gè)程序參考:
void sort(int arr[],int n)
{
//冒泡法非遞減排序
int i,j,temp;
for(i=0;in-1;i++)
for(j=0;jn-i-1;j++)
{
if(arr[j]arr[j+1])
temp=arr[j],arr[j]=arr[j+1],arr[j+1]=temp;
}
}
你按照上面的 調(diào)用方式,就相當(dāng)于返回了排序好的數(shù)組呀?。。。。。。?/p>
因?yàn)閭鞯氖堑刂分?!,你如果把?shù)組聲明為全局變量,就根本不需要往排序的函數(shù)中傳遞數(shù)組了
C語(yǔ)音沒(méi)有直接返回一個(gè)數(shù)組的說(shuō)法,要得到一個(gè)數(shù)組的返回值,一般做法有幾點(diǎn):
傳入一個(gè)指向數(shù)組指針變量,在函數(shù)內(nèi)部對(duì)指針地址內(nèi)的值進(jìn)行修改
函數(shù)內(nèi)部申請(qǐng)動(dòng)態(tài)內(nèi)存,將數(shù)據(jù)保存到這塊內(nèi)存后返回該動(dòng)態(tài)內(nèi)存的指針,最后需要手動(dòng)釋放這塊內(nèi)存
使用靜態(tài)變量(這個(gè)方法不建議使用,靜態(tài)、全局變量很容易導(dǎo)致多線程編程出問(wèn)題)
當(dāng)前文章:c語(yǔ)言獲取數(shù)組函數(shù)返回值 c++ 返回?cái)?shù)組的函數(shù)
標(biāo)題網(wǎng)址:http://muchs.cn/article14/docccge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、營(yíng)銷型網(wǎng)站建設(shè)、定制開(kāi)發(fā)、用戶體驗(yàn)、品牌網(wǎng)站制作、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)