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

Đề tài: Bực mình nhỉ, đoạn code đơn giản này mà không ai giúp được mình sao?

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

    Mặc định Bực mình nhỉ, đoạn code đơn giản này mà không ai giúp được mình sao?

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void hamnhap(int *a, int n)
    {
    int i;
    printf("\nDia chi dau tien duoc truyen vao la: a= %p\n",a);
    a=(int *)malloc(n*sizeof (int));
    for(i=0;i<n;i++)
    scanf("\n%d",&a[i]);
    }

    void hamin(int a[],int n)
    {
    int i;
    for(i=0;i<n;i++)
    printf("\n a[%d]=%d",i,a[i]);
    }
    main()
    {
    int a[50];
    int i,n=3;
    printf("\nPhan tu dau tien cua mang a co dia chi la: a[0]= %p\n",a );
    hamnhap(a,n);
    printf("\nHien thi cac gia tri vua nhap: ");
    printf("\nPhan tu dau tien cua mang a sau khi thoat ham co dia chi la: a[0]= %p",a );
    hamin(a,n);


    getch();
    }

    Khi in ra các giá trị thì bị lỗi, mà mình nhìn thấy chẳng có lỗi nào cả. Ai đó giúp mình đi.

  2. #2
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    nhìn chẳng có lỗi gì mà biết bị lỗi, lại không nói lỗi như thế nào thì giúp bằng niềm tin à.

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

    Trích dẫn Nguyên bản được gửi bởi conga2012 Xem bài viết
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void hamnhap(int *a, int n)
    {
    int i;
    printf("\nDia chi dau tien duoc truyen vao la: a= %p\n",a);
    a=(int *)malloc(n*sizeof (int));
    for(i=0;i<n;i++)
    scanf("\n%d",&a[i]);
    }

    void hamin(int a[],int n)
    {
    int i;
    for(i=0;i<n;i++)
    printf("\n a[%d]=%d",i,a[i]);
    }
    main()
    {
    int a[50];
    int i,n=3;
    printf("\nPhan tu dau tien cua mang a co dia chi la: a[0]= %p\n",a );
    hamnhap(a,n);
    printf("\nHien thi cac gia tri vua nhap: ");
    printf("\nPhan tu dau tien cua mang a sau khi thoat ham co dia chi la: a[0]= %p",a );
    hamin(a,n);


    getch();
    }

    Khi in ra các giá trị thì bị lỗi, mà mình nhìn thấy chẳng có lỗi nào cả. Ai đó giúp mình đi.
    Mình ko rành lắm nhưng bài bạn làm nữa nạc nửa mỡ. Lúc thì *a lúc thì a[]. Có thề compile ko có lỗi nhưng có lỗi run-time về vấn đề cấp phát vùng nhớ. Bạn malloc ở trong hàm nhập hamnhap() khi ra ngoài hàm đó thì coi a chưa được khởi tạo.Vì vậy khi printf ra các giá trị nhập vào thì nó lấy con số nào đó. Theo mình nghĩ bạn nên dùng 1 kiểu * hoặc dùng []. Còn vừa * vừa [] thì nên xài [] sau đó khai báo * gán = [] đó, rồi làm trên *. Như vậy sẽ ít găp tình huống khó hường về *.
    -Mình tạm sủa bài của bạn thế này :
    p/s: có int or void main() nhé !
    Code:
    #include "stdafx.h"
    
    
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    void hamnhap(int *a, int n)
    {
    
    printf("\nDia chi dau tien duoc truyen vao la: a= %p\n",a);
    for(int i=0;i<n;i++)
    	scanf("\n%d",a+i); 
    }
    
    void hamin(int *a,int n)
    {
    int i;
    for(i=0;i<n;i++)
    printf("\n a[%d]= %d",i,*(a+i));
    
    }
    int main()
    {
    int *a = NULL;
    int i,n=3;
    a=(int *)malloc(n*sizeof (int));
    printf("\nPhan tu dau tien cua mang a co dia chi la: a[0]= %p\n",a );
    hamnhap(a,n);
    printf("\nPhan tu dau tien cua mang a co dia chi la: a[0]= %p\n",a );
    printf("\nHien thi cac gia tri vua nhap: ");
    printf("\nPhan tu dau tien cua mang a sau khi thoat ham co dia chi la: a[0]= %p",a );
    hamin(a,n);
    
    
    
    getch(); 
    }
    -Mình chỉ biết vậy thôi. Có gì ko đúng mong mọi người chỉ giáo thêm. Thansk all !

  4. #4
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Chỉ biết nói một câu: bó tay.
    Học lại về mảng, pointer, tham biến-tham trị truyền vào cho hàm đi cậu.
    Ở ngoài thì cấp một array trên stack, truyền nó vào, quăng nó đi, cấp phát một memory trên heap, ra ngoài hàm lai dùng lại array trên stack.
    Chậm mà chắc, học lại đi cậu. Ngu ý của tui, xin đừng chém, có chém thì cứ chém thỏa mái.

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

    Hôm nay mới thấy bác TNQ tái xuất hiii. conga2012 Mình đã giải thích cho bạn rồi sao bạn không đọc nhỉ ??.
    Mình chỉ biết vậy thôi. Có gì ko đúng mong mọi người chỉ giáo thêm. Thansk all !
    cái này khi dùng *a hay a[] không có vấn gì với mảng 1 chiều bạn à, chỉ có mảng 2 chiều thì cần chú ý **a và a[][const value] thôi. Nhưng thực ra a[] không là con trỏ.
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

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

    Mặc định Bực mình nhỉ, đoạn code đơn giản này mà không ai giúp được mình sao?

    Trích dẫn Nguyên bản được gửi bởi TQN Xem bài viết
    Chỉ biết nói một câu: bó tay.
    Học lại về mảng, pointer, tham biến-tham trị truyền vào cho hàm đi cậu.
    Ở ngoài thì cấp một array trên stack, truyền nó vào, quăng nó đi, cấp phát một memory trên heap, ra ngoài hàm lai dùng lại array trên stack.
    Chậm mà chắc, học lại đi cậu. Ngu ý của tui, xin đừng chém, có chém thì cứ chém thỏa mái.
    -Mình nghĩ bạn chắc hiểu biết sâu về phần này lắm. cũng nên nói cho mọi người học hỏi chứ. Trả lời như vậy có lẽ ko giúp được mọi người nhiều đâu bạn.

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

    Trích dẫn Nguyên bản được gửi bởi TQN Xem bài viết
    Chỉ biết nói một câu: bó tay.
    Học lại về mảng, pointer, tham biến-tham trị truyền vào cho hàm đi cậu.
    Ở ngoài thì cấp một array trên stack, truyền nó vào, quăng nó đi, cấp phát một memory trên heap, ra ngoài hàm lai dùng lại array trên stack.
    Chậm mà chắc, học lại đi cậu. Ngu ý của tui, xin đừng chém, có chém thì cứ chém thỏa mái.
    Câu trả lời tuyệt vời đấy bạn, mình hiểu rồi. thanks

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

    Trích dẫn Nguyên bản được gửi bởi kimcy1992 Xem bài viết
    Hôm nay mới thấy bác TNQ tái xuất hiii. conga2012 Mình đã giải thích cho bạn rồi sao bạn không đọc nhỉ ??.
    cái này khi dùng *a hay a[] không có vấn gì với mảng 1 chiều bạn à, chỉ có mảng 2 chiều thì cần chú ý **a và a[][const value] thôi. Nhưng thực ra a[] không là con trỏ.
    Vì xót ruột mình làm 2 đề tài thui. Thanks bạn lần nữa.

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

  1. 1 đoạn code ngã tư giao thông, giúp mình sửa lỗi?
    Gửi bởi effective trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-06-2013, 04:34 PM
  2. Kỹ thuật C [Hỏi] Giải thích đoạn code do...while giúp mình
    Gửi bởi mt7m trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 16-01-2013, 09:53 PM
  3. Sửa giúp code chương trình từ điển đơn giản
    Gửi bởi meeokon trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 01-11-2010, 11:57 PM
  4. lỗi code giải phương trình bậc 2. Giúp sửa
    Gửi bởi thanh92_d10cn4 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 10-10-2010, 07:34 PM
  5. Code bắt kí tự từ bàn phím, các bạn giải thích giúp?
    Gửi bởi manhluc88 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-04-2009, 02:45 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