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: Con trỏ trong C++ hoạt động như thế nào?

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định Con trỏ trong C++ hoạt động như thế nào?

    C++ Code:
    1. #include <iostream.h>
    2. #include <conio.h>
    3. int main()
    4. {
    5. int *p, *q;
    6. p = new int(1);
    7. q = new int(2);
    8. cout<< *p <<"\t"<< *q <<endl;
    9. *p = *q + 3;
    10. cout<< *p <<"\t"<< *q <<endl;
    11. p = q;
    12. cout<< *p <<"\t"<< *q <<endl;
    13. *p = 7;
    14. cout<< *p <<"\t"<< *q <<endl;
    15. p = new int;
    16. delete p;
    17. p = NULL;
    18. q = NULL;
    19. getch();
    20. }

    Sao lại ra kết quả là

    1 2
    5 2
    2 2
    7 7


    Nhờ mọi người giải thích cách tính toán thế nào để có kết quả màu đỏ

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Đây nhá. Chắc cái 1 2 cậu hiểu rồi nhá.
    Code:
    *p = *q + 3;
    cout<< *p <<"\t"<< *q <<endl;
    *p ở đây đang có giá trị là 1
    *q ở đây đang có giá trị là 2
    *p = *q + 3 tức là *p = 2 + 3
    ==> 5 2 đúng không

    Code:
    p = q;
    cout<< *p <<"\t"<< *q <<endl;
    p = q tức là q trỏ đến đâu thì p trỏ đến đấy
    ở đây *q vẫn mang giá trị là 2 ==> *p mang giá trị là 2
    ==> 2 2

    Code:
    *p = 7;
    cout<< *p <<"\t"<< *q <<endl;
    *p = 7 tức là đặt lại giá trị cho *p = 7
    *q ở đây vẫn là 2
    ==> 7 2
    mấy dòng cuối chỉ là xóa con trỏ .....

  3. #3
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Cảm ơn nhiều nhé , mình đã hiểu rồi

    Con trỏ mảng , con trỏ đối tượng mình đã hiểu , nhưng con trỏ hàm ko có tài liệu nên ko hiểu mong mọi người giúp đỡ

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Hàm thì chỉ nên dùng tham chiếu thôi, ko nên dùng con trỏ bạn ạ.

  5. #5
    Ngày gia nhập
    04 2007
    Bài viết
    3

    Tiện đây tớ cũng muốn hỏi 1 tí về con trỏ hàm :
    -Tớ không phân biệt được sự khác nhau giữa 2 kiểu khai báo parameter của 1 hàm trong fuction header:
    int (*function)(int)
    và int *function(int)
    Kiểu thứ nhất có phải là khai báo rằng parameter này sẽ là kiểu int?Còn kiểu thứ 2 sẽ là poiter đến 1 integer?Như vậy thì tại sao kiểu 1 lại đúng bởi vì tớ nghĩ ở đây mình cần địa chỉ của cái function-->phải khai báo parameter là 1 pointer chứ?

  6. #6
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định Con trỏ trong C++ hoạt động như thế nào?

    giả sử mình khai báo :

    double* copy(double a[] , int n)
    {...}

    Vậy trong hàm main() thì sử dụng hàm con trỏ đó thế nào

    Thank

  7. #7
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Đây là code của một bài copy mảng double

    #include <iostream.h>
    #include <conio.h>
    void print(double t[],int m)
    {
    for(int i=0;i<m;i++)
    {
    cout << t[i] << " ";
    }
    cout << endl;
    }
    double* copy(double x[],int n)
    {
    double* p=new double[n];
    for(int i=0;i<n;i++)
    {
    p[i]=x[i];
    }
    return p;
    }
    int main()
    {
    double a[8]={22.2,33.3,44.4,55.5,66.6,77.7,88.8,99.9};
    print(a,8);
    double* b=copy(a,8);
    a[2]=a[4]=11.1;
    print(a,8);
    print(b,8);
    getch();
    }

    Mọi người có thể giúp mình giải thích dòng màu đỏ được ko?

    Với cho mình hỏi : Tại sao ta xóa dấu * tại double* copy(...) thì chương trình ko chạy
    Mong mọi người giải thích giùm , thank

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Làm sao mà bỏ cái dấu* được MU ( Mới đăng quang mà lững thững thế ) . Cái hàm copy của cậu trị trả về là kiểu con trỏ , một kiểu địa chỉ do đó nếu mà gọi hàm cậu không dùng con trỏ thì nó sẽ báo lỗi là không thể convert from ... to void * ? nếu muốn bỏ thì cậu có thể làm cách khác bằng các thêm các đối vào trong hàm copy còn trị trả về thì void chứ không chơi con trỏ nữa ? Nếu được thì dùng tham biến cho nó cool

  9. #9
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Giả sử chỉ khai báo int* hama(int a[],int n){...}

    Không cần quan tâm lệnh gì trong hàm hama . Nếu muốn gọi hàm hama() thì

    phải dùng lệnh gì , phải chăng phải thông qua con trỏ , mong bạn giải thích rõ

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    uh đúng rồi ? để gọi hàm và lấy giá trị của hàm thì có thể làm như sau :
    int *p
    p=hama(----);

    rồi thế là xong ?

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

  1. Editor trong asp hoạt động thế nào !
    Gửi bởi sinhvien_ct trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 27-05-2011, 08:01 PM
  2. Phép cộng chuỗi trong sql hoạt động thế nào ?
    Gửi bởi GaPro trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 29-11-2010, 11:04 PM
  3. Cách đọc số thành chữ hoặc âm thanh trong c# như thế nào?
    Gửi bởi viethieu02 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 19-08-2010, 12:42 AM
  4. Con trỏ trong class hoạt động như thế nào?
    Gửi bởi conglaogia trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 08-04-2009, 09:43 PM
  5. thắc mắc về đồ hoạ trong C
    Gửi bởi pine8xproit trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 21-12-2008, 12:53 AM

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