c語言返回值為數組
① c語言中如何使返回值為數組
int Merge1 (int b[ ], int b1[ ], int s, int m, int t )改成int *Merge1 (int b[ ], int b1[ ], int s, int m, int t )
就是int 後面加*,這樣就可以了
② c語言中怎樣返回一個數組
在C語言中,無法直接返回一個數組,但是可以通過返回對應類型指針的方式,返回數組。
在大多數情況下,一維數組和一維指針是可以通用的。
比如,定義一個函數,申請一定長度的整型動態數組,其長度用參數傳入,並將結果返回。如出錯,返回空指針NULL。 代碼可以寫成如下形式:
int*int_array_create(intn)//參數n為數組元素個數
{
int*r;
if(n<=0)returnNULL;//參數錯誤
r=(int*)malloc(sizeof(int)*n);//申請內存空間,大小為n個int長度。
returnr;//返回得到的整型數組的指針。
}
③ C語言中,return語句怎麼樣返回一個數組
首先,C/C++只能返回數組的指針而不能返回整個數組。即使返回數組的指針,但如果函數中的數組是自動性質,那將是危險的。這是比較正宗的表述。如果確實需要從函數中返回自動性質的數組的全部元素值,有沒有辦法呢?有。由於C/C++是允許返回結構體的,可以定義一個結構體模板,把數組作為成員安排在其中,函數中臨時聲明結構體變數,操作其中的數組;完畢後返回結構體變數,在主調函數中用同類型的結構體變數接收就可間接實現「返回一個數組」。舉例代碼如下:
#include"stdio.h"
structA{
intm[30];//把數組m安排在結構體A中
};
structAfun(intn){
inti,j,k;
structAs;//在函數中聲明自動型結構體變數s
for(i=0;i<n;s.m[i++]=i+1);//為結構體成員數組m賦值1~15
for(j=n-1,i=0;i<j;i++,j--)//倒序這個數組
k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
returns;//返回結構體變數s
}
intmain(intargc,char*argv[]){
Aa;//主調函數中聲明同類型結構體變數a接收函數fun的返回值
inti;
a=fun(15);//用15調用fun(不要大於30,只是舉例),將結果賦於a
for(i=0;i<15;i++)//輸出看看是不是倒序了...
printf("%d",a.m[i]);
printf(" ");
return0;
}
運行結果如下:
④ C語言函數如何return數組
數組在作為函數返回值或者函數參數時,實際上只作為指針來返回或者傳遞的。因此返回值用指針數據類型。比如下面的代碼:
intg_a[4]={1,2,3,4};
int*retn_arrary()//返回值用指針類型即要。
{
returng_a;
}
⑤ C語言 怎麼返回一個數組
你想返回一個數組,因為你在一個函數內創建了數組,屬於局部變數,所以他在stack部分,而stack部分是用後類似於銷毀的,你返回的地址類似於一塊垃圾的地址,所以編譯警告。你要想返回函數內創建的數組地址的話需要
//insideafunction
{
//nisthesizeofthearray;
int*array=(int*)malloc(sizeof(int)*n);
/*
dosomethingwitharray
*/
returnarray;
}
這樣這個數組建立在heap堆上,調用完函數還在,而你返回了那個堆上數組的首地址,這樣就沒問題了。
用完free(array);
樓上用static不推薦,用static的話會在整個程序的run time運行時都佔用空間。而是用malloc,動態申請釋放更合理。
⑥ 怎麼使C語言的函數返回值為一個數組
// 方法1,用靜態變數進行返回
char *SubFunction(void)
{
static char szText[5] = "adfa"; // 用靜態空間
//對p進行賦值操作
return szText;
}
void Caller() // 這個函數調用SubFunction
{
TRACE("%s\n", SubFunction);
}
// 方法2,用指針傳遞
void SubFunction(char *pText1, char *pText2)
{
// 對pText1, pText2運算
strcpy(pText1, "love");
strcpy(pText2, "you");
return;
}
void Caller() // 這個函數調用SubFunction
{
char szText1[5], szText2[5]; // 當然這里也可以動態分配內存
SubFunction(szText1, szText2); // szText1, szText2就是帶回的值
TRACE("%s %s\n", szText1, szText2);
}
⑦ c語言中函數返回值可以是數組、字元串和結構體嗎
1、ANSIC語言標准,明確規定數組類型和函數類型不可以做為返回值。
解決這種返回值的方法是通過指針來間接返回,即使用數組指針和函數指針。這可以做為c語言引入指針的另一個理由。
2、字元串是數組的一種,是字元數組,所以同樣不可以作為返回值。
3、結構體類型可以做為返回值,C語言設計者當時引入struct結構體的概念,目的是為了增加一種建立C語言新類型的機制,換句話說它希望通過struct建立的類型,像內置的int float類型一樣使用方便。