PHP Code:float[][20] CongMaTran(float a[][20],float b[][20],int n)
{
float c[n][n];
....// Code vào đây
return c;
}
Giả sử em có hàm sau :
Giờ muốn trả về là mảng c , thì trong hàm CongMaTran ta return gìPHP Code:float CongMaTran(float a[][20],float b[][20],int n)
{
float c[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
Trong hàm main() ta khai báo thế nào vậy
Cảnh cáo : lần sau source thì cho vào thẻ [ C O D E ] [ / C O D E ] . Cảm ơn. Xcross87
Đã được chỉnh sửa lần cuối bởi Xcross87 : 07-10-2007 lúc 10:39 PM.
PHP Code:float[][20] CongMaTran(float a[][20],float b[][20],int n)
{
float c[n][n];
....// Code vào đây
return c;
}
None!
Lỗi nặng đấy Pete, trả về local variable (cấp phát trên stack).
trả về của hàm thì 1 là trả bằng trị
2 là trả bằng tham khảo, khi đó biến trả về phải là member property của lớp, hoặc local static
Trường hợp trên trả về mảng tương tự như trả về tham khảo
Với hàm toàn cục thì 1 là trả ra biến toàn cục, 2 là trả về kết quả bằng chính tham số vào
3 là dùng biến staticCode:void func1(..., float* pOutput, unsigned int sizeOfOutput) { //xuất ra pOutput }
Code:float* func1(..) { static float buf[1000]; ... return buf; }
Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 07-10-2007 lúc 11:00 PM.
Cách tối ưu nhất là : Trả về một con trỏ trỏ đến mảng c
Đối với việc xử lý trên các array thì tốt nhất nên dùng void, cho 1 biến kết quả vào trong đối số và chuyển kết quả cho nó (quá đơn giản và dễ hiểu).
Ví dụ như cộng 2 ma trận thì ta có: void CongMT(int a[][maxx], int b[][maxx], int c[][maxx]). Ko cần phải suy nghĩ nó trả về cái gì phải ko nào.