Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Mảng động

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

    Mặc định Mảng động

    Mình muốn tạo mảng động A bằng cách cấp phát bộ nhớ cho nó.
    Code:
    #include<stdio.h>
    #include<stdlib.h>
    void Nhap_mang(int *&A, int &N)
    {
    	printf("Nhap so phan tu mang:");
    	scanf("%d",&N);
    	A = (int*) malloc (N*sizeof(int));
    	for(int i = 0; i < N; i++)
    	{
    		printf("Phan tu thu %d:", i+1);
    		scanf("%d",A+i);
    	}
    	free(A);
    }
    void Xuat_mang(int *&A, int N)
    {
    	for(int i = 0; i < N; i++)
    	{
    		printf("%d\t",*(A+i));
    	}
    }
    int main()
    {
    	int *A, N;
    	Nhap_mang(A,N);
    	Xuat_mang(A,N);
    }
    Chương trình chạy được nhưng in ra giá trị không đúng.
    Xem giúp mình bị sai gì k.
    Cho hỏi thêm là khi cấp phát mảng động như vậy thì có cần phải kiểm tra if(A == NULL) gì đó k
    Thanks!

  2. #2
    Ngày gia nhập
    03 2012
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi ngoquochuy Xem bài viết
    Mình muốn tạo mảng động A bằng cách cấp phát bộ nhớ cho nó.
    Code:
    #include<stdio.h>
    #include<stdlib.h>
    void Nhap_mang(int *&A, int &N)
    {
    	printf("Nhap so phan tu mang:");
    	scanf("%d",&N);
    	A = (int*) malloc (N*sizeof(int));
    	for(int i = 0; i < N; i++)
    	{
    		printf("Phan tu thu %d:", i+1);
    		scanf("%d",A+i);
    	}
    	free(A);
    }
    void Xuat_mang(int *&A, int N)
    {
    	for(int i = 0; i < N; i++)
    	{
    		printf("%d\t",*(A+i));
    	}
    }
    int main()
    {
    	int *A, N;
    	Nhap_mang(A,N);
    	Xuat_mang(A,N);
    }
    Chương trình chạy được nhưng in ra giá trị không đúng.
    Xem giúp mình bị sai gì k.
    Cho hỏi thêm là khi cấp phát mảng động như vậy thì có cần phải kiểm tra if(A == NULL) gì đó k
    Thanks!
    C Code:
    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. void Nhap_mang(int *A, int N)
    4. {
    5.     for(int i = 0; i < N; i++)
    6.     {
    7.         printf("Phan tu thu %d:", i+1);
    8.         scanf("%d",A+i);
    9.     }
    10. }
    11. void Xuat_mang(int *A, int N)
    12. {
    13.     for(int i = 0; i < N; i++)
    14.     {
    15.         printf("%d\t",*(A+i));
    16.     }
    17. }
    18. int main()
    19. {
    20.     int *A, N;
    21.     printf("Nhap so phan tu mang:");
    22.     scanf("%d",&N);
    23.     A = (int*) malloc (N*sizeof(int));
    24.     Nhap_mang(A,N);
    25.     Xuat_mang(A,N);
    26. }

    Y!M: doxuanthangvn
    Skype: doxuanthangvnn
    Email: doxuanthang@hotmail.com

  3. #3
    Ngày gia nhập
    02 2010
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi ngoquochuy Xem bài viết
    Mình muốn tạo mảng động A bằng cách cấp phát bộ nhớ cho nó.
    Code:
    #include<stdio.h>
    #include<stdlib.h>
    void Nhap_mang(int *&A, int &N)
    {
    	printf("Nhap so phan tu mang:");
    	scanf("%d",&N);
    	A = (int*) malloc (N*sizeof(int));
    	for(int i = 0; i < N; i++)
    	{
    		printf("Phan tu thu %d:", i+1);
    		scanf("%d",A+i);
    	}
    	free(A);
    }
    void Xuat_mang(int *&A, int N)
    {
    	for(int i = 0; i < N; i++)
    	{
    		printf("%d\t",*(A+i));
    	}
    }
    int main()
    {
    	int *A, N;
    	Nhap_mang(A,N);
    	Xuat_mang(A,N);
    }
    Chương trình chạy được nhưng in ra giá trị không đúng.
    Xem giúp mình bị sai gì k.
    Cho hỏi thêm là khi cấp phát mảng động như vậy thì có cần phải kiểm tra if(A == NULL) gì đó k
    Thanks!
    nhìn sơ qua: hàm nhập mảng bạn đã sử dụng tham chiếu để cấp phát bên trong hàm, sau đó thì bạn đã giải phóng bằng free thì cái mảng còn đâu nữa??? rồi hàm xuất nó sẽ xuất cái gì????

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

    Vậy mình phải giải phóng nó như thế nào?

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Trích dẫn Nguyên bản được gửi bởi ngoquochuy Xem bài viết
    Vậy mình phải giải phóng nó như thế nào?
    với C bạn có thể dùng với free(con tro);
    với C++ bạn có thể dùng toán tử delete khi cấp phát bằng toán tử new
    Rõ hơn nữa thì bạn vào đây đọc thôi http://diendan.congdongcviet.com/showthread.php?t=36221
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

  6. #6
    Ngày gia nhập
    02 2010
    Bài viết
    113

    Mặc định Mảng động

    Trích dẫn Nguyên bản được gửi bởi ngoquochuy Xem bài viết
    Vậy mình phải giải phóng nó như thế nào?
    giải phóng nó sau khi bạn đã thực thi tất cả những thao tác mà bạn đề ra... vd như cuối hàm main chẳng hạn..

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

    Thanks nhieu nha!
    À cho em hỏi thêm, khi nào thì mình mới kiểm tra khi cấp phát. Cái câu lệnh
    if(A == NULL) gì đó

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