在C語言中,無法直接返回一個數(shù)組,但是可以通過返回對應類型指針的方式,返回數(shù)組。

我們提供的服務有:成都網站設計、成都網站制作、微信公眾號開發(fā)、網站優(yōu)化、網站認證、可克達拉ssl等。為上千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的可克達拉網站制作公司
在大多數(shù)情況下,一維數(shù)組和一維指針是可以通用的。
比如,定義一個函數(shù),申請一定長度的整型動態(tài)數(shù)組,其長度用參數(shù)傳入,并將結果返回。如出錯,返回空指針NULL。 代碼可以寫成如下形式:
int?*int_array_create(int?n)//參數(shù)n為數(shù)組元素個數(shù)
{
int?*r;?
if(n=0)?return?NULL;//參數(shù)錯誤
r?=?(int?*)malloc(sizeof(int)*n);//申請內存空間,大小為n個int長度。
return?r;//返回得到的整型數(shù)組的指針。?
}
#include
"stdio.h"
void
input(int
a[10])
//給一維數(shù)組輸入數(shù)據
{
int
i;
for(i=0;i10;i++)
scanf("%d",a[i]);
}
void
output(int
a[10])
//輸出一維數(shù)組輸入數(shù)據
{
int
i;
for(i=0;i10;i++)
printf("%d
",a[i]);
}
int
main()
{
int
b[10];
input(b);
//調用input函數(shù)給數(shù)組b賦值
output(b);//調用output函數(shù)輸出數(shù)組b中的值
}
提供兩個辦法:
1.在主調函數(shù)中建立數(shù)組,將數(shù)組指針傳給自定義的函數(shù),處理后主調函數(shù)中的數(shù)組值也就變化了。
void fun(int a[],int n){
........
}//其中a[]就是要輸入的數(shù)組,n是這個數(shù)組的長度。
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0};
fun(arry,10);
......
}
2.可以在主調函數(shù)中建立數(shù)組并把首地址和長度傳給函數(shù),在函數(shù)中創(chuàng)建一個動態(tài)數(shù)組,處理完后把動態(tài)數(shù)組的首地址返回主調函數(shù),最后在主調函數(shù)中釋放動態(tài)申請的內存。
int *fun(int a[],int n){
int *p=(int *)malloc(n*sizeof(int));//申請內存.
if(!p){//判斷是否申請成功.
printf("failure...");
exit(0);
}
memcpy(p,a,n*sizeof(int));//把主調函數(shù)的數(shù)組拷貝過來.
......
return p;
}
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0},*ptmp;
ptmp=fun(arry,10);
......
free(ptmp);//釋放申請的空間.
}
數(shù)組的內容是不能一一傳給函數(shù)的……
二維數(shù)組無法作為參數(shù)直接傳遞給函數(shù),但是可以利用二維數(shù)組內部數(shù)據的連續(xù)性,將二維數(shù)組的地址按照一維數(shù)組的方式傳遞給函數(shù),并傳入對應的行列數(shù),從而實現(xiàn)函數(shù)內打印二維數(shù)組的效果。
以整型為例,具體方式如下:
void?print_array(int?*a,?int?m,?int?n)//a為一個m行,n列的二維數(shù)組的首地址。
{
int?i,?j;
for(i?=?0;?i??m;?i?++)
{
for(j?=?0;?j??n;?j?++)
{
printf("%d,",?a[i*n+j]);//a[i*n+j]也就是原始二維數(shù)組第i行第j列的元素。
}
printf("\n");//每行結束輸出換行。
}
}
網站欄目:c語言定義函數(shù)輸出數(shù)組,數(shù)組的輸出c語言
地址分享:http://chinadenli.net/article9/dsgcooh.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站建設、移動網站建設、服務器托管、標簽優(yōu)化、手機網站建設、網站維護
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)