與其他高階語言相比,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...