c語言,c 函式返回乙個陣列,二維陣列

2021-07-25 07:07:27 字數 1198 閱讀 5454

與其他高階語言相比,c語言,c++ 最大的不方便之處就是 函式只能返回乙個數值。若要返回乙個陣列,必須用到指標以及動態分配記憶體。

這是乙個坎,就如學結他時的大橫按一樣,不少人在這個坎上望而卻步。

我前幾年一直看不懂,最近重溫c 與c++的動態記憶體,發現忽然明白會用了。可能經過這幾年大量的程式設計,越來越具有程式設計師思維了吧。

方法之一:返回乙個結構體,結構體裡面包括乙個陣列。

因為結構體執行效率略慢,這個方法我乾脆不用了。

方法之二:利用指標函式,並結合動態記憶體。

int *fun()

宣告乙個動態陣列 a;

return a;

void main()

用指標呼叫函式 int *p=fun();

釋放該指標 free(p);     (相當於釋放了指標函式裡面的動態陣列)

舉例:下面程式返回乙個一維陣列

#include "stdio.h"

#include "stdlib.h"

int * max(int *arr,int n)

a[0]=maxnum;a[1]=maxindex;

return a;

}void main()

;//a[0]=5,a[1]=2;

int *b=max(a,2);

int i;

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

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

free(b);

}

這個程式中的max函式不僅能夠返回乙個陣列的最大值,還能夠顯示這個最大值在陣列中的位置。

下列程式返回乙個二維陣列,求出乙個二維陣列各行的最大值以及所在位置。

#include "stdio.h"

#include "stdlib.h"

int **max(int **arr,int n,int m)

} //printf("\n");

} return data;

}void main()

; int **b=max((int **)a,2,3);

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

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

free(b[i]);

free(b);

}

如何讓C語言函式返回乙個二維陣列

為了讓c語言函式返回乙個二維陣列,有些人這樣定義函式 int foo int rows,int columns 然後在函式中費勁心機拼出來乙個這樣的malloc語句 int result columns int columns malloc rows columns sizeof int 在函式內讀...

C 返回二維陣列

為了讓c語言函式返回乙個二維陣列,有些人這樣定義函式 int foo int rows,int columns 然後在函式中費勁心機拼出來乙個這樣的malloc語句 int result columns int columns malloc rows columns sizeof int 在函式內讀...

c 返回乙個陣列

bqg s complexity analysis 最近遇到乙個很不一般的事情,返回乙個陣列時,我們可以直接返回它的首位址,但是如果呼叫兩次以上,返回的數值就是有問題的了。呼叫兩次js 函式,分別用a b陣列存放返回的陣列值,但是接收到返回的數值居然和我返回前存放的數值不一樣。及改善 include...