當前位置:首頁 » 編程語言 » c語言函數返回數組

c語言函數返回數組

發布時間: 2022-01-17 15:06:16

A. c語言函數中怎麼返回一個二維數組

1、我們首先定義一個二級指針和一個行列變數[int ** array,row,column;]。

B. C語言函數如何返回二維數組

你這個二維數組要動態分配的才行,不然存儲周期只在他的函數裡面有效

C. c語言函數返回數組


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

在大多數情況下,一維數組和一維指針是可以通用的。


比如,定義一個函數,申請一定長度的整型動態數組,其長度用參數傳入,並將結果返回。如出錯,返回空指針NULL。 代碼可以寫成如下形式:

int*int_array_create(intn)//參數n為數組元素個數
{
int*r;
if(n<=0)returnNULL;//參數錯誤
r=(int*)malloc(sizeof(int)*n);//申請內存空間,大小為n個int長度。
returnr;//返回得到的整型數組的指針。
}

D. c語言中函數能返回一個數組嗎

不能直接返回一個數組,但是可以用其他方式實現類似功能。
方法1:利用全局變數

分析:全局變數作為C語言的一個知識點,雖然我們都了解它的特點,但在實際教學過程中應用得並不是很多。由於全局變數的作用域是從定義變數開始直到程序結束,而對於編寫有多個返回值的C語言函數,我們可以考慮把要返回的多個值定義成全局變數。當函數被調用時,全局變數被更改,我們再把更改後的全局變數值應用於主調函數中。函數被調用後被更改後的全局變數值即為函數的數個返回值。下面以一個實例演示該方法的應用。
實例1:編寫函數求3個數中的最大值與最小值。
方法:把最大值、最小值分別定義成2個全局變數max、min,在用戶自定義函數中把求出來的最大值與最小值分別賦給全局變數max、min。函數調用完畢後全局變數的max、min值即保存了函數要求返回的值。程序參考代碼如下:
#include "stdio.h"
#include "conio.h"
int max,min;/*定義兩個全局變數用於保存函數返回值*/
void max_min(int a,int b,int c) /*定義求最大最小值的函數*/
{max=min=a; /*初始化最大最小值*/
if(max if(max if(min>b)min=b;
if(min>c)min=c;
}
main()
{int x,y,z;
printf(" 請輸入3個整數:\n");
scanf("%d,%d,%d",&x,&y,&z);
max_min(x,y,z) ;/*調用求最大值與最小值的函數*/
printf("三個數中的最大值為:%d;最小值為:%d",max,min);/*輸出最大值與最小值*/
getch();
}
調試結果如下:
請輸入3個整數:
5,-6,2
三個數中的最大值為:5;最小值為:-6
注意:該方法雖然可以實現有多個返回值的函數,但由於全局變數不能保證值的正確性(因為其作用域是全局,所以程序范圍內都可以修改它的值,如果出現錯誤將非常難以發現),並且全局變數增加了程序間模塊的耦合,所以該方法要慎用。

方法2:傳遞數組指針

分析:在教學過程中,我們知道C語言函數參數的傳遞方式有值傳遞與地址傳遞。當進行值傳遞時,主調函數把實參的值復制給形參,形參獲得從主調函數傳遞過來的值運行函數。在值傳遞過程中被調函數參數值的更改不能導致實參值的更改。而如果是地址傳遞,由於傳遞過程中從實參傳遞過來的是地址,所以被調函數中形參值的更改會直接導致實參值的更改。因此,我們可以考慮把多個返回值作為數組元素定義成一個數組的形式,並使該數組的地址作為函數的形式參數,以傳址方式傳遞數組參數。函數被調用後,形參數組元素改變導致實參改變,我們再從改變後的實參數組元素中獲得函數的多個返回值。以下實例演示該方法的應用。
實例2:編寫函數求一維整形數組的最大值與最小值,並把最大值與最小值返回給主調函數。
方法:以指針方式傳遞該一維數組的地址,然後把數組的最大值與數組的第一個元素交換,把數組的最小值與最後一個元素交換。函數被調用完畢後,實參數組中的第一元素為數組的最大值,實參數組中最後一個元素為數組的最小值,從而實現返回數組的最大值與最小值的功能。程序參考代碼如下:
#include "stdio.h"
#include "conio.h"
void max_min(int *ptr,int n) /*定義求數組最大值最小值的函數,傳遞數組指針*/
{int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
int *temp;/*用於交換位置*/
*temp=*ptr;
for(i=0;i{
if(*ptr<*(ptr+i))/*最大值與第一個元素進行交換*/
{
k=i;
*temp=*ptr;
*ptr=*(ptr+k);
*(ptr+k)=*temp ;
}
if(*(ptr+n-1)>*(ptr+i))/*最小值與最後一個元素進行交換*/
{
j=i;
*temp =*(ptr+n-1);
*(ptr+n-1)=*(ptr+j);
*(ptr+j)= *temp ;}
}
}
/*調用最大最小值函數*/
main()
{
int A[6],i;
for(i=0;i<6;i++)
scanf("%d",&A[i]);
max_min(A,6);
printf("max=%d, min=%d\n \n",A[0],A[5]);
getch();
}
調試結果如下:
請輸入6個整形數,以空格隔開:
5 8 9 32 -6 4
max=32,min=-6
注意:該方法適用於多個返回值的數據類型一致的情況。當返回值數據類型不一致時,不適用該方法

E. C語言函數中返回數組

void pop(int b[],int n)
{
int i;
for(i=0;i<n;i++)
b[i]=i;
}

main()
{
int b[3],i;
pop(b,3);
for(i=0;i<3;i++) printf("%d",b[i]);
}

離開子函數之後,那個數組空間已經釋放,返回好像沒意義了

F. c語言中如何定義一個返回數組的函數

數組不可以直接返回,只能通過參數傳遞出來,比如:
void
fun(int*
p);
int
main()
{
int
a[100];
fun(a);
return
0;
}
希望能幫助你。

G. C語言子函數如何返回一個數組,主函數如何接收

一般是需要主函數提供保存數據的數組,在參數中給出數組起始地址,然後子函數在其中填充,比如要准會的整數是56
void fun(int *a,int b) { ... }
void main() { int a[20];
fun(a,56);

}

H. C語言函數如何return數組

數組在作為函數返回值或者函數參數時,實際上只作為指針來返回或者傳遞的。因此返回值用指針數據類型。比如下面的代碼:

intg_a[4]={1,2,3,4};
int*retn_arrary()//返回值用指針類型即要。
{
returng_a;
}

I. c語言函數返回數組

函數是無法返回數組的,只能返回指針,但返回指針的弊端是指針指向的內存不能是函數的局部變數的。所以還得用傳出參數,有兩個辦法,一是直接用一個array就搞定,另它的每一行的最後一列是計算出來的平均值;另一個方法就是再傳入進去一個指針,返回平均數。第一種可以不修改當前介面直接改,但如果無所謂還是第二種比較好,代碼如下:

voidstudent_aver(floatarray[3][3],floataverage[3]){
inti,j;
floatsum;
for(i=0;i<3;i++){
sum=0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
average[i]=sum/3;
}
}

J. C語言調用數組返回數組怎麼做

#include <stdio.h>

#define MIN(x,y)

int * add_1();

main()

{

int * p = add_1();

int b[5];

for(int i=0;i<5;i++)

{

b[i] = *(p+i);

}

for(i=0;i<5;i++)

{

printf("%d",b[i]);

}

}

int * add_1()

{

int static a[5]={1,2,3,4,5};

return a;

}

(10)c語言函數返回數組擴展閱讀:

注意事項

一、該數組不能是返回函數的局部變數數組,因為局部變數數組在退出函數後會被釋放。

可以是全局變數,靜態局部變數,動態分配內存,以及從函數參數傳過來的數組地址。

二、返回指針時,無法返回長度,所以需要其它方式傳回數組長度,以下是幾種常用的方法。

1、約定固定長度。

2、以函數參數返回數組長度。

3、將長度保存在全局變數中。

4、約定數組結束標記。

5、在數組中存儲數組長度,如存在第一個元素中。

有些時候需要子函數將一個數組返回出來,通常是兩種方法,一種是靠指針,另一種是結構體。

例如指針:

#include <stdio.h>

char *test(char *tmp)

{

return tmp;

}

void main(void)

{

printf("%s",test("第一個測試例子 "));

}

熱點內容
微信小程序演算法 發布:2024-04-26 20:03:36 瀏覽:974
易語言模板不能靜態編譯 發布:2024-04-26 19:59:02 瀏覽:352
sql注釋語句 發布:2024-04-26 19:58:48 瀏覽:653
sql存儲過程out 發布:2024-04-26 19:33:15 瀏覽:414
struts2訪問方法 發布:2024-04-26 19:11:36 瀏覽:259
外文翻譯android 發布:2024-04-26 19:03:30 瀏覽:92
土金木配置怎麼樣 發布:2024-04-26 18:52:50 瀏覽:611
這台電腦如何訪問另一台電腦伺服器 發布:2024-04-26 18:51:08 瀏覽:628
怎麼快速了解電腦的配置 發布:2024-04-26 18:42:11 瀏覽:998
rsa加密演算法例子 發布:2024-04-26 18:40:29 瀏覽:244