導航:首頁 > 整形美容 > 返回數組整形數據怎麼定義函數返回值

返回數組整形數據怎麼定義函數返回值

發布時間:2021-02-19 07:08:43

㈠ 聲明一個指向數組大小為10的指針,數組中的元素為返回值類型為整型指針的函數; 如何定義該指針

int (*(*p)[10])(int *)
首先題目說要聲明一個數組指針, 一般我們想到的數組指針是 隨便來一個 int(*p)[10], 然後又說每個元素是內一個函數指針,那麼容我們便來一個 函數指針 int (*pf)(int *) . 然後把(*p)[10]作為一個整體替代 pf 即 int(*(*p)[10]))(int *); 分析: 判斷一個復雜式子看最高優先順序的,*p是一個指針,然後(*p)外面是[],所以是數組指針,(*p)[10])描述完畢,然後再看外面int(*)(int *)很明顯,這是一個函數指針,所以這個數組中每個元素是函數指針

㈡ 為什麼c語言中自定義一個整形函數沒有返回值依然能運

在C中,正常情況下,我們只能從函數中返回一個值。但在有些情況下,我們需要從函數中返回多個值,此時使用數組或指針能夠很好地完成這樣的任務。這里是一
個示例,這個程序使用一個整型數組作為參數,並將數組元素的和與積返回給調用函數。下面是C代碼,這是一種常見情況。下面給出實現技巧:

1.
#include

2.
#include

3. int*
Pool(int array[],int size)

4.
{

5.
int *x;

6.
int i=0;

7.
int
a[2]={0,1};

8.
for(i=0;i

9.
{

10.

a[0]+=array[i];
// 存儲數組元素值的和

11.

a[1]*=array[i];
// 存儲數組元素值的積

12.
}

13. //
將數組的基地址賦值給整型指針

14.
x=&a[0];

15. //
返回整個數組

16.
return x;

17. }

18.

19. int main()

20. {

21. int
a[]={1,2,3,4};

22. int
*c; c = Pool(a,4);

23.
printf("Sum = %d\nProct = %d\n",c[0],c[1]);

24.
getch();

25.
return 0;

26. }

這樣,我們就知道如何使用數組和指針從C函數中返回多個值。在很多情況下你會發現這個技巧很有用。

㈢ C語言數組怎麼返回自定義函數

//一、由函數參數帶回固定的二維數組
void func(int ppout[][2])
{
ppout[0][0] = 1;
ppout[0][1] = 2;
ppout[1][0] = 3;
ppout[1][1] = 4;
}

int _tmain(int argc, _TCHAR* argv[])
{
int pp[2][2];
func(pp);
cout << pp[0][0] << pp[0][1] << endl;
cout << pp[1][0] << pp[1][1] << endl;
system("pause"); //讓窗口暫停,便於看結果
return 0;
}

//二、由函數參數帶回動態二維數組
void func(int** pp, int rows, int columns)
{
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int rows = 3, columns = 2;
int** pp;
int i, j;
//申請內存
pp = new int*[rows];

for (j = 0; j < rows; j++)
pp[j] = new int[columns];
func(pp, rows, columns);
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
//釋放內存
for (j = 0; j < rows; j++)
delete[] pp[j];
delete[] pp;
system("pause"); //讓窗口暫停,便於看結果
return 0;
}

//如果非要從函數的返回值中帶回二維數組,這是最好的方式
//三、由函數帶回動態二維數組
int** func(int rows, int columns)
{
int i, j;
int** pp;
//申請內存
pp = new int*[rows];
for (j = 0; j < rows; j++)
pp[j] = new int[columns];
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
return pp;
}

int _tmain(int argc, _TCHAR* argv[])
{
int rows = 3, columns = 2;
int** pp;
int i, j;
pp = func(rows, columns);
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
//釋放內存
for (j = 0; j < rows; j++)
delete[] pp[j];
delete[] pp;
system("pause"); //讓窗口暫停,便於看結果
return 0;
}

//四、由函數帶回二維數組
//這種方式有問題,程序中已經說明,不要採取此方式
const int rows = 3, columns = 2;
int (*func())[columns]
{
int i, j;

static int pp[rows][columns]; //如果不是靜態的,函數退出後其內存就變得無效。
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
return pp;
}

int _tmain(int argc, _TCHAR* argv[])
{

int (*pp)[columns];
int i, j;
//pp = new (int[columns]*)[rows];
pp = func();
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
system("pause"); //讓窗口暫停,便於看結果
return 0;
}

㈣ 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
注意:該方法適用於多個返回值的數據類型一致的情況。當返回值數據類型不一致時,不適用該方法。

㈤ C#里返回值為int類型數組的函數如何定義

int[] 實際上是一個類,它的基類是Array.實際上,所有的數組類型都是類,而且基類是Array.
int[] arr=new int[10],實際內上是創建了int[]這種類型的一個容對象,只是微軟為了讓大家習慣,就使用了類似C++的數組定義方式。
你的補充問題是不是這個意思:
arr = randques();
randques會返回一個int[]的數組
如果是這個意思的話,那麼答案就是肯定的,因為返回值和 arr是同一種數據類型:int[]

㈥ java數組在自定義函數中返回值

public Num(int n)是構造函數,沒有返回值。如果必須使用構造函數的話,可以考慮使用成員變數來保存和輸出數組的值。代碼如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Num {

List<Integer> list = new ArrayList<>();

public static void main(String[] args) throws Throwable{
try(Scanner s = new Scanner(System.in)) {
System.out.println("輸入個數");
int n = Integer.parseInt(s.nextLine());
Num li = new Num(n);
for(int i = 0; i < n; i++) {
s.nextLine();
System.out.println(li.list.get(i));
}
}
}
public Num(int n) {
for(int i = 0 ; i < n ; i++) {
list.add(n);
}
}
}

如果想使用函數的返回值來保存和輸出數組的值,那可以使用普通的帶有返回值的函數來實現。代碼如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Num {
public static void main(String[] args) throws Throwable{
try(Scanner s = new Scanner(System.in)) {
System.out.println("輸入個數");
int n = Integer.parseInt(s.nextLine());
Num li = new Num();
List<Integer> list = li.NumSave(n);
for(int i = 0; i < n; i++) {
s.nextLine();
System.out.println(list.get(i));
}
}
}
public List<Integer> NumSave(int n) {
List<Integer> list = new ArrayList<>();
for(int i = 0 ; i < n ; i++) {
list.add(n);
}
return list;
}
}
麻煩看一下是否好用。

㈦ 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
注意:該方法適用於多個返回值的數據類型一致的情況。當返回值數據類型不一致時,不適用該方法

㈧ C程序自定義函數數組返回值

不用返回,在子函數處理後,直接使用就可以了。數組和指針差不多。看看《C專家編程》,就有答案了,呵呵

㈨ c語言自定義的函數如何返回一個數組

#include<stdio.h>
main()
{
float change(float array[3][3]);
float a[3][3];
int i,j;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]);
change (a);
for (i=0;i<3;i++)
for (j=0;j<3;j++)
printf("%4d\n",a[i][j]);
}
float change(float array[3][3]) // 這里可以寫出 array[][3]
{
float c[3][3];
int m,n;
for(m=0;m<3;m++)
for(n=0;n<3;n++)
c[n][m]=array[m][n];
for(m=0;m<3;m++)
for(n=0;n<3;n++)
arry[m][n]=c[m][n]; //不想改變你的程序,所以在這里修改。這樣 arry在主函數中是可以訪問的。版。權。不用返回了。
}

㈩ 我想用調用函數返回一個數組,返回值那裡應該怎麼寫

返回數組是一復個很不制好的習慣,因為你無法真正的返回一個數組,而是返回一個指向數組首地址的指針。如果你真的需要一個數組應該這么做,
int func(int * array, int max);第1個參數是數組的首地址,比如你有int a[20], 那麼就傳a,不過必須先初始化,max表示你傳入的數組的長度,即函數中對數組的操作不能超過max,否則越界,返回值是實際有效的數組元素個數。

閱讀全文

與返回數組整形數據怎麼定義函數返回值相關的資料

熱點內容
35歲乾性皮膚起痘用什麼護膚品 瀏覽:290
深海娜美皮膚多少錢 瀏覽:532
正品減肥多少錢 瀏覽:837
蒙妮坦美容養生館靖南店怎麼樣 瀏覽:417
蘭州哪裡有白癜風醫院 瀏覽:50
做隆鼻哪裡整形醫院比較好 瀏覽:590
怎麼測試皮膚的年齡呢 瀏覽:516
植藻水能量化妝品多少錢一瓶 瀏覽:350
贛州市皮膚病哪裡最好的醫院 瀏覽:741
晩上吃什麼水果減肥 瀏覽:824
上海美容紋眉多少錢 瀏覽:506
汽車美容店換機油要什麼證 瀏覽:196
八大處整形外科醫院住哪裡 瀏覽:612
化妝生產許可證號在哪裡 瀏覽:212
中性皮膚適合用哪個護膚品比較好 瀏覽:192
舟山婦科醫院怎麼樣 瀏覽:928
皮膚敏感期擦什麼護膚品 瀏覽:755
水劑類化妝品包括哪些 瀏覽:921
珠海整形醫生方明技術怎麼樣 瀏覽:567
無錫整形哪裡好擅選瑪利亞重點 瀏覽:317