Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1

    con trỏ trong C++ có tác dụng gì?

    Mình mới học C++ nhưng khi học đến con trỏ thì cũng chưa chắc chắn lắm mình chưa hiểu kỹ về con trỏ có tình huống này mình không giải thích được mong các pác chỉ dùm cái

    #include <iostream.h>

    int main()
    {
    int *mang,*mang2;
    int hang, cot;


    cout<<"hang";
    cin>>hang;
    cout<<"cot";
    cin>>cot;
    mang=new int[hang,cot];
    for(int i=0;i<hang;i++)
    {
    for(int j=0;j<cot;j++)
    {
    cin>>mang[i,j];
    }
    }

    mang2=new int[hang,cot];
    for(int k=0;k<hang;k++)
    {
    for(int z=0;z<cot;z++)
    {
    cin>>mang2[k,z];
    }
    }

    int *mang3=new int[hang,cot];
    for(int l=0;l<hang;l++)
    {
    for(int h=0;h<cot;h++)
    {
    mang3[l,h]=mang2[l,h]+mang[l,h];
    }
    }

    for(int n=0;n<hang;n++)
    {
    for(int m=0;m<cot;m++)
    {
    cout<<mang3[n,m];
    }
    cout<<"
    ";
    }
    return 0;
    }
    ở ví dụ trên khi mình nhập cho hang=2, cot=2 và ma trận lần lướt là
    mang=
    2 2
    2 2
    mang2=
    2 2
    2 2

    khi in ra ket qua sẽ đựoc là
    4 4
    4 4
    tức là đúng rồi
    còn trưong hợp mình sữa lại đoạn code như sau

    #include <iostream.h>

    int main()
    {
    int *mang,*mang2;
    int hang, cot;


    cout<<"hang";
    cin>>hang;
    cout<<"cot";
    cin>>cot;
    mang=new int[hang,cot];
    /hap su lieu cho mang 2 chieu
    for(int i=0;i<hang;i++)
    {
    for(int j=0;j<cot;j++)
    {
    cin>>mang[i,j];
    }
    }
    /hap su lieu cho mang 2 chieu
    mang2=new int[hang,cot];

    /tien hanh cong 2 ma tran va gan cho ma tran "mang" luong
    for(int k=0;k<hang;k++)
    {
    for(int z=0;z<cot;z++)
    {
    cin>>mang2[k,z];
    }
    }

    for(int l=0;l<hang;l++)
    {
    for(int h=0;h<cot;h++)
    {
    mang2[l,h]=mang2[l,h]+mang[l,h];
    }
    }
    //in ra mang ket qua
    for(int n=0;n<hang;n++)
    {
    for(int m=0;m<cot;m++)
    {
    cout<<mang2[n,m];
    }
    cout<<"
    ";
    }
    return 0;
    }
    kết quả
    6 6
    6 6
    không hỉu tại sao lại bằng 6.
    mong các pác giúp em với.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    mình đang bí có pác nào biết chỉ với

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trước hết bạn phải phân biệt được tham biến và tham trị trong chương trình con...Tham chiếu trong C/C++ chính là tham biến
    Còn ngược lại là tham trị.

    Tham chiếu có nghĩa là bạn muốn thao tác trực tiếp trên vùng nhớ đó.Nó chỉ có ý nghĩa khi bạn dùng làm đối số cho chương trình con(giống kiểu Var của pascal) ví dụ______

    a=1;
    ham1(int &a)
    {
    a=2;
    }
    ham1(a);
    ra ngoài hàm có kết quả a=2(nếu mà không có & thì a vẫn =1)

    Tuy nhiên bạn có thể dùng con trỏ để chỉ đến một vùng nhớ và nhờ con trỏ này để thao tác trực tiếp trên vùng nhớ đó
    Và bây giờ nó thực hiện chức năng của biến tham chiếu
    ví dụ

    ham2(int *p)
    {
    *p=2;
    }
    a=1;
    ham2(a);
    (kết quả a=2)

    hêhê!!!!!!!

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vuonghuynhit
    Trước hết bạn phải phân biệt được tham biến và tham trị trong chương trình con...Tham chiếu trong C/C++ chính là tham biến
    Còn ngược lại là tham trị.

    Tham chiếu có nghĩa là bạn muốn thao tác trực tiếp trên vùng nhớ đó.Nó chỉ có ý nghĩa khi bạn dùng làm đối số cho chương trình con(giống kiểu Var của pascal) ví dụ______

    a=1;
    ham1(int &a)
    {
    a=2;
    }
    ham1(a);
    ra ngoài hàm có kết quả a=2(nếu mà không có & thì a vẫn =1)

    Tuy nhiên bạn có thể dùng con trỏ để chỉ đến một vùng nhớ và nhờ con trỏ này để thao tác trực tiếp trên vùng nhớ đó
    Và bây giờ nó thực hiện chức năng của biến tham chiếu
    ví dụ

    ham2(int *p)
    {
    *p=2;
    }
    a=1;
    ham2(a);
    (kết quả a=2)

    hêhê!!!!!!!
    Hiểu như em đơn giản quá, chưa đáng để sử dụng con trỏ.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vuonghuynhit
    ham2(int *p)
    {
    *p=2;
    }
    a=1;
    ham2(a);
    (kết quả a=2)

    hêhê!!!!!!!
    a=2 tôi die liền

  6. #6
    Trích dẫn Gửi bởi langman
    a=2 tôi die liền
    Trích dẫn Gửi bởi vuonghuynhit
    Trước hết bạn phải phân biệt được tham biến và tham trị trong chương trình con...Tham chiếu trong C/C++ chính là tham biến
    Còn ngược lại là tham trị.

    Tham chiếu có nghĩa là bạn muốn thao tác trực tiếp trên vùng nhớ đó.Nó chỉ có ý nghĩa khi bạn dùng làm đối số cho chương trình con(giống kiểu Var của pascal) ví dụ______

    a=1;
    ham1(int &a)
    {
    a=2;
    }
    ham1(a);
    ra ngoài hàm có kết quả a=2(nếu mà không có & thì a vẫn =1)

    Tuy nhiên bạn có thể dùng con trỏ để chỉ đến một vùng nhớ và nhờ con trỏ này để thao tác trực tiếp trên vùng nhớ đó
    Và bây giờ nó thực hiện chức năng của biến tham chiếu
    ví dụ

    ham2(int *p)
    {
    *p=2;
    }
    a=1;
    ham2(a);
    (kết quả a=2)

    hêhê!!!!!!!
    cảm ơn bạn đã giúp nhưng mình nghĩ nếu đoạn code của bạn phải là ham2(&a);
    thì khi ra ngoài hàm kết quả a==2 thì là đúng chứ. tham số yêu cầu là tham biến mà bạn lại truyền tham trị thì sẽ lỗi đó, ai có thể giải thích dùm câu hỏi của mình dùm không.ở đây mình cũng dùng con trỏ nhưng hắn không cho cộng dồn giá trị vào mình nghĩ là sai ở toán tử +=.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •