Yahoo Hỏi & Đáp sẽ ngừng hoạt động vào ngày 4 tháng 5 năm 2021 (Giờ Miền Đông nước Mỹ) và từ nay, trang web Yahoo Hỏi & Đáp sẽ chỉ ở chế độ đọc. Các thuộc tính hoặc dịch vụ khác của Yahoo hay tài khoản Yahoo của bạn sẽ không có gì thay đổi. Bạn có thể tìm thêm thông tin về việc Yahoo Hỏi & Đáp ngừng hoạt động cũng như cách tải về dữ liệu của bạn trên trang trợ giúp này.

ai rành về con trỏ trong C++ làm ơn giúp mính với !?

mấy bạn ui .mình có đoạn code như về ., mình mong các bạn giải thích dùm mình thêm về các vấn đề trong đoạn nè

++++++++++++++++++++++++++++++++++++++++++++

void main()

{

int i =10 ,j = 20;

int *a;

a = &i;

int *b;

b = &j;

cout<<"Noi dung(hay gia tri) cua i ,j "<<endl;

cout<<"1==>"<<i<<","<<j<<endl;

cout<<"\nDia chi cua bien i,j"<<endl;

cout<<"2==>"<<&i<<","<<&j<<endl;

cout<<"\nDia chi ma a,b dang giu"<<endl;

cout<<"3==>"<<a<<","<<b<<endl;

cout<<"\nGia tri cua bien a,b dang giu"<<endl;

cout<<"4==>"<<*a<<","<<*b<<endl;

cout<<"\nDia chi cua bien a,b"<<endl;

cout<<"5==>"<<&a<<","<<&b<<endl;

cout<<"\n\n6==>"<<*(&a)<<","<<*(&b)<<endl;

cout<<"\n\n7==>"<<&*a<<","<<&*b<<endl;

}

++++++++++++++++++++++++++++++++++++++

các bạn làm ơn giải thích thêm dùm mình cái chổ 6 ,.7 .., mình ko bít mấy cái &* , *& ,** ý nghĩa như thế nào ..

mình được bít thì : & dùng để lấy địa chỉ

* dùng để lấy và cập nhật giá trị tại địa chỉ mà con trỏ đang giữ

và mình còn lọng cọng chổ khi nào dấu và có nghĩ là " lấy địa chỉ ", khi nào nó đứng vai trò là tham chiếu

mình ko phân biệt được cái đó .,... huhu ! mong mọi người giúp đở !!!

1 Câu trả lời

Xếp hạng
  • 1 thập kỷ trước
    Câu trả lời yêu thích

    Con trỏ dùng để lưu địa chỉ của một biến nào đó. Đây là điểm mạnh của ngôn ngữ C.

    Ứng dụng của nó giống như là "mục lục" trong một quyển sách vậy đó. Bạn tưởng tượng nếu một cuốn sách không có mục lục thì việc tìm nội dung để đọc sẽ khó khăn thế nào.

    Bạn thấy mục lục của cuốn sách thì phải có trang mục lục ( tức có vùng nhớ ) để lưu mục lục.

    Mục lục thì có mục lục lớn và mục lục nhỏ => phải có con trỏ trỏ đến con trỏ.

    int *a; // Khai báo biến con trỏ a

    a = &i; // Gán địa chỉ biến i cho con trỏ , tức thêm dấu & trước biến i

    int *b; // Khai báo biến con trỏ b

    b = &j; // Gán địa chỉ biến i cho con trỏ , tức thêm dấu & trước biến i

    Để ý : dòng 2,3 ,6,7 in ra màn hình giá trị giống nhau.

    cout<<"2==>"<<&i // địa chỉ của biến i

    cout<<"3==>"<<a // giá trị mà a lưu giữ là địa chỉ của biến i

    cout<<"5==>"<<&a // Do a là biến nên nó cũng có địa chỉ của riêng nó ( giống như mục lục cũng có địa chỉ của trang mục lục )

    cout<<"\n\n6==>"<<*(&a) // Thêm cái dấu * là lấu nội dụng của địa chỉ (&a) tức là a

    cout<<"\n\n7==>"<<&*a // *a = nội dung của biến i mà con trỏ a chỉ đến , thêm & lấy địa chỉ của nội dung đó

    Còn nếu muốn sử dụng "con trỏ" trỏ "con trỏ" thì ta thêm khái báo ở đầu như sau:

    int *a, **pa; // Khai báo biến con trỏ a

    a = &i; // Gán địa chỉ biến i cho con trỏ , tức thêm dấu & trước biến i

    pa = &a / Lấy địa chỉ biến con trỏ a

    cout<<"5==>"<<&a

    cout<<"8==>"<<pa

    Lúc này ta thấy 2 dòng 5 và 8 giống nhau.

    .

Bạn vẫn có câu hỏi? Hãy hỏi ngay để nhận câu trả lời.