c語言函數返回值是數組
Ⅰ c語言中函數返回值可以是數組、字元串和結構體嗎
1、ANSIC語言標准,明確規定數組類型和函數類型不可以做為返回值。
解決這種返回值的方法是通過指針來間接返回,即使用數組指針和函數指針。這可以做為c語言引入指針的另一個理由。
2、字元串是數組的一種,是字元數組,所以同樣不可以作為返回值。
3、結構體類型可以做為返回值,C語言設計者當時引入struct結構體的概念,目的是為了增加一種建立C語言新類型的機制,換句話說它希望通過struct建立的類型,像內置的int float類型一樣使用方便。
Ⅱ c語言中調用函數的返回值,如果是數組,主函數要輸出這個數組怎麼實現啊
用指針,另外保存數據的變數退出函數時不得消失。
例如:
#include<stdio.h>
int * fun(int n)
{
int i;
static int a[100]; // 這里用static
for (i=0;i<n;i++) a[i]=i;
return &a[0];
}
void main()
{
int i,n=5;
int *p; // 聲明指針
p = fun(n); // 返回指針
for (i=0;i<n;i++) printf("%d ",p[i]); // 把 p 看成數組來輸出
}
得 0 1 2 3 4
(2)c語言函數返回值是數組擴展閱讀:
注意事項
1、數組宏棚的維度必須是一個常蔽段則量表達式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表達式
int arr1[i];//正確
int arr2[j];//錯誤
system("燃宏pause");
return 0;
}
2、默認情況下,數組的元素被默認初始化。
而且需要注意的是,和內置類型的變數一樣,如果在函數內部定義了某種內置類型的數組,那麼默認初始化會令數組有未定義的值。
Ⅲ 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語言的函數返回值為一個數組
// 方法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語言函數中返回數組
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]);
}
離開子函數之後,那個數組空間已經釋放,返回好像沒意義了