Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 17 kết quả

Đề tài: [Solved]Hàm trả về mảng

  1. #1
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Post [Solved]Hàm trả về mảng

    Bác nào chỉ cho em kĩ thuật hàm trả về mảng với ! Cho em vài demo luôn, có giải thích nhé ! Em cám ơn nhiều !

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Thông thường 1 hàm không thể trả về là mảng vì hàm chỉ trả về 1 giá trị mà thôi nhưng cũng còn 1 cách để làm cho hàm trả về giá trị là mảng ,để làm được điều đó ta dùng con trỏ để thực hiện việc này.
    Code:
    float funcTion()
    {
       float *pointer;
       poiter=(int*)malloc(10*sizeof(float));
    ..................//câu lệnh thao tác
    return poiter;
    }
    void main()
    {
    float *temp;
    temp=funcTion();
    ...............//câu lệnh thao tác
    free(temp);
    }
    Đây chỉ là code demo thôi nên mình lười không viết đầy đủ ra ,khi bạn khai con trỏ và cấp phát bộ nhớ cho nó thì nó sẽ chứa 1 lượng ô nhớ bằng số lượng bạn cần. khi đó ta có 1 mảng mà phần tử đầu tiên chính là con trỏ đến những phần tử tiếp theo.Do đó ta sẽ có thể trả về mảng như yêu cầu đề bài.
    Hiểu biết có hạn không thể diễn tả cho bạn hiểu ,bạn cứ coi thử bài demo của mình làm nếu có gì không hiểu cứ post câu hỏi lên mọi người và mình sẽ cố gắng giải đáp trong khả năng có thể.Nếu có giải thích sai xin mọi người chỉ bảo cho ạ.
    À bạn đưa câu hỏi vào đầu năm xông đất cho C việt thế này thiệt quý hoá quá,đầu năm mà chăm học thế này thật là quý, thay mặt BQT C việt mình xin chúc bạn 1 năm mới vạn sự như ý nhé.
    ttecak ?

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Vậy hok muốn trả về mãng để làm gì, trả về tham chiếu tới mãng hay con trỏ tới mãng thì rr nghĩ hợp lý hơn, post project Hok đang làm lên rr xem thử, chứ nói vậy thì cũng không biết nói sao ? Tết nhất siêng dữ hen

  4. #4
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Trả về mảng cũng có cách này hay hay

    Code:
    int *ham_tra_ve_mang( ... , ... )
    {
     static int a[10];
     return a;
    }

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Thực chất anh nghĩ không có kiểu trả về mãng, cách sieuphuong là trả về con trỏ tới mãng mà...!Con trỏ này tham chiếu tới mãng thì đúng hơn là ý nghĩa trả về mãng.

  6. #6
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Mặc định [Solved]Hàm trả về mảng

    Thực chất anh nghĩ không có kiểu trả về mãng, cách sieuphuong là trả về con trỏ tới mãng mà...!Con trỏ này tham chiếu tới mãng thì đúng hơn là ý nghĩa trả về mãng.
    Mình nghĩ cũng chẳng có gì khác nhau cả. Vì biến mảng vốn cũng là một con trỏ mà.

    Tiện đây mình code cho một bài hoàn chỉnh về hàm trả về mảng (cả 1 chiều và 2 chiều luôn).

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int *createArray(int n) {
    	int *a;
    
    	a = (int*) malloc(n * sizeof(int));
    
    	return a;
    }
    
    int **createArray(int m, int n) {
    	int **a;
    
    	a = (int**) malloc(m * sizeof(int*));
    
    	for(int i = 0; i < m; i++) {
    		a[i] = (int*) malloc(sizeof(int));
    	}
    
    	return a;
    }
    
    void main() {
    	int *a;		// Mang mot chieu a
    	int **b;	// Mang hai chieu b
    
    	a = createArray(100);	// tao mang a voi 100 phan tu
    	b = createArray(10,10);	// tao mang b voi 10x10 phan tu
    
    	a[1] = 1;
    	b[2][3] = 2;
    
    	printf("a[1] = %d\n", a[1]);
    	printf("b[2][3] = %d", b[2][3]);
    
    	getch();
    }
    pEnGwINUS.

  7. #7
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Ui trùi ui ! Sao mà nhiều cách thế Em đang nghiên cứu về con trỏ, nhân tiện em hỏi thêm về con trỏ hàm. Sách của em (Giáo trình lí thuyết và bài tập C - Nguyễn Đình Tê - Hoàng Đức Hải - cuốn 1) chỉ nói một phần nhỏ với một ví dụ cơ bản về con trỏ hàm, mà đọc đi đọc lại vẫn chưa hiểu lắm. Các anh post vài bài cặn kẽ về con trỏ hàm nhé ? Àh cho em hỏi thêm về ứng dụng thực tế của con trỏ hàm, mãi mà không biết nó dùng vào việc gì ?

  8. #8
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Con trỏ hàm dùng để chứa địa chỉ của hàm. Ví dụ một bài này cho dễ hiểu:

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    int sum(int a, int b) {
    	return a + b;
    }
    
    int multiply(int a, int b) {
    	return a * b;
    }
    
    int (*pControHam)(int, int);   // Khai báo con trỏ hàm...Nó sẽ trỏ được vào những hàm có tham số (int, int)
    
    void main() {
    	int a, b;
    
    	printf("Nhap a: ");
    	scanf("%d", &a);
    
    	printf("Nhap b: ");
    	scanf("%d", &b);
    	
    	pControHam = sum; // Lúc này pControHam sẽ là hàm sum
    	printf("a + b = %d\n", pControHam(a, b));
    
    	pControHam = multiply; // Lúc này pControHam sẽ là hàm multiply
    	printf("a * b = %d", pControHam(a, b));
    
    	getch();
    }
    Output
    Code:
    Nhap a: 2
    Nhap b: 3
    a + b = 5
    a * b = 6
    Thực sự mình biết cái này cũng chỉ để...biết thôi chứ cũng chưa áp dụng gì vào thực tế cả.
    pEnGwINUS.

  9. #9
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Thực sự mình biết cái này cũng chỉ để...biết thôi chứ cũng chưa áp dụng gì vào thực tế cả.
    Con trỏ hàm dùng khi trong một lời gọi hàm có gọi đến 1 hàm khác . Khi đó tham số hình thức tương ứng phải là 1 con trỏ hàm .

    Ví dụ :

    Chương trình tính cos(2x)

    Ta biết cos(2x)=2cos^2(x)-1

    Code:
    /*xay dung ham tinh cos(2x) */
    double tinh_cos_2x(double (*f)(double),int x)
    {
     return (2*f(x)*f(x)-1);
    }
    
    main()
    {
      tinh_cos_2x(cos,MI_PI/2);
    }

  10. #10
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Như vậy tên hàm cũng như một loại biến và chiếm một số địa chỉ ô nhớ àh ?

Các đề tài tương tự

  1. [ Solved ]Tính tổng của 2 ma trận
    Gửi bởi thangit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 19-10-2008, 02:32 AM
  2. [ Solved ]Sửa hộ mình ma trận và in ra màn hình
    Gửi bởi congbaow trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 16-10-2008, 08:30 PM
  3. [ Solved ]Định thức ma trận vuông
    Gửi bởi cuibap trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 04-10-2008, 09:02 AM
  4. [ Solved ]Nhập ma trận với con trỏ hai chiều
    Gửi bởi shushu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 23-09-2008, 06:52 AM
  5. [Solved]Lấy Giá Trị Trả về của 1 stored procudure
    Gửi bởi minhitcn2 trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 5
    Bài viết cuối: 26-01-2008, 08:35 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn