在構(gòu)造方法中,我們經(jīng)常通過函數(shù)得到改變的或者新建的數(shù)組。但是使用return是無法成功返回的,如下:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
double* convertTemperature(double celsius, int* returnSize){
double ktem,htem;
double ans[2];
ktem=celsius+273.15;
htem=celsius*1.80+32.00;
ans[0]=ktem;
ans[1]=htem;
return ans;
}
因?yàn)閿?shù)組ans為局部變量 隨著函數(shù)調(diào)用的結(jié)束,其中的各種局部變量也將被系統(tǒng)收回,所以無法正確返回數(shù)組值,可以采用以下方法:
方法一:使用數(shù)組指針,malloc分配動態(tài)空間。
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
double* convertTemperature(double celsius, int* returnSize){
double* ans;
ans=(double*)malloc(sizeof(double)*2);
ans[0]=celsius+273.15;
ans[1]=celsius*1.80+32.00;
*returnSize=2;
return ans;
}
方法二:采用static關(guān)鍵字
int* function(){
static int str[5]={1,2,3,4,5};
return str;
}
當(dāng)主函數(shù)中已經(jīng)定義該數(shù)組可以直接返回,如:
#include<stdio.h>
void function(int str[],int len)
{
int i=0;
for(i=0;i<len;i++){
str[i]=str[i]+1;
}
}
int main()
{
int str[5]={1,2,3,4,5};
int len=5;
function(&str,len);
for(int i=0;i<len;i++)
{
printf("%d",str[i]);
}
return 0;
}
方法一:使用數(shù)組指針,通過指針改變數(shù)組內(nèi)容文章來源:http://www.zghlxwxcb.cn/news/detail-615356.html
void function(int *str,int len)
{
for(int i=0;i<len;i++){
*(str+i)=str[i]+1;
}
}
int main()
{
int str[5]={1,2,3,4,5};
int len=5;
function(str,len);
for(int i=0;i<len;i++)
{
printf("%d",str[i]);
}
return 0;
}
方法二:使用&引用,引用數(shù)組直接帶回數(shù)組值。文章來源地址http://www.zghlxwxcb.cn/news/detail-615356.html
#include<stdio.h>
void function(int(&str)[5],int len)
{
int i=0;
for(i=0;i<len;i++){
str[i]=str[i]+1;
}
}
int main()
{
int str[5]={1,2,3,4,5};
int len=5;
function(str,len);
for(int i=0;i<len;i++)
{
printf("%d",str[i]);
}
return 0;
}
到了這里,關(guān)于C語言返回數(shù)組的兩種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!