Một số thắc mắc về con trỏ

con trỏ head không trỏ đến địa chỉ của con trỏ a nhé, nó trỏ đến vùng nhớ mà con trỏ a trỏ tới thôi

3 Likes

Confirm cho 2 thanh niên @TTmagic@Rok_Hoang là trả lời quá đúng nhé :smile:

2 Likes

Cái mà Hoàng đang nói đến có phải đang nói đến MIền của con trỏ b hay ko ?

Miền con trỏ b là sao nhỉ, chắc anh theo dõi không kịp?

1 Like

Dạ giống như là vùng nhớ của b đó anh ?

Tại em có xem video trên mạng thì nó ghi 1 con trỏ có 3 thành phấn .

*a : giá trị của con trỏ .
&a : địa chỉ của riêng con trỏ a.
a : là miền giá trị của con tro mà a trỏ tới ( em nghĩ nó chính là vùng nhớ của con trỏ mà a trỏ tới ).

Có gì sai sót anh sửa giúp em .

Để anh viết lại một ví dụ hoàn chỉnh:

int a = 3;
int *pa = &a;

Thì khi này:

  • *pa: là giá trị của a
  • &pa: địa chỉ của chính con trỏ đó
  • pa: địa chỉ của a
1 Like

Em vẫn còn mơ hồ giữa vùng nhớ vs cái địa chỉ thưa anh . vùng nhớ của a có phải là địa chỉ của a hay không anh ? hay vùng nhớ chỉ là giá trị của vùng nhớ đó .

Đối với câu trên của @Rok_Hoang thì đúng là như vậy.

Câu này gây khó hiểu quá.

1 Like

Nhiều ngôn từ trong đầu em mà em không biết dùng sao cho hợp lý ?

Kiểu như là giá trị nằm trong địa chỉ mà nguyên cái (địa chỉ + giá tri ) em gọi bằng vùng nhớ ? em nghĩ thế không viết có đúng hay không .

Anh nghĩ tốt nhất sao em không xem lại video con trỏ C++ của anh nhỉ?

http://portal.daynhauhoc.com/p/hoc-lap-trinh-ngon-ngu-cpp/

Anh nghĩ anh giải thích khá rõ với hình ảnh đấy.

1 Like

Em thường lên youtube xem clip . Hình như mỗi người có 1 cách nói khác nhau thì phải .

Cảm ơn anh . em xem luôn .

1 Like

Anh cho em hỏi 2 con trỏ TRỎ tới nhau thì cái 2 cái Miền em ghi trong Code nó bằng nhau .

Anh giải thích giúp em 2 cái Miền trên được không ?

Như ở post trên anh đã nói

  • pa: địa chỉ của a

Trong ví dụ của em, ab là 2 con trỏ. Giả sử a đang trỏ tới X, thì khi em ghi a, tức là địa chỉ của X.
Tiếp đó em gán b = a, tức là cho b giữ địa chỉ của X.

Trong ví dụ này, địa chỉ của X là 000E1510

2 Likes

Dạ anh em hiểu rồi . Cảm ơn anh

2 Likes

Bổ sung luôn. Anh Đạt chưa ghi rõ chỗ này
*pa: là giá trị của a
&pa: địa chỉ của chính con trỏ đó. &pa luôn mặc định và ko thể thay đổi.
pa: miền giá trị của con trỏ ( tức là nơi mà pa nó trỏ đến .TH này pa <=> &a . Vì nó đang trỏ đến biến a).

NODE *p = L.pHead; // p trỏ tới NODE đầu
L.pHead = L.pHead -> pNext; // L.pHead sang Node kể. Nhưng p vẫn ở NODE đầu
delete p ; // ko ảnh hưởng L.pHead. Vì trước đó ta đã kịp gán L.pHead là Node kế rùi.
// Như vậy DSLK của ta sẽ ko bị đứt đoạn.

Chú ý làm việc trên 2 NODE đầu và cuối phải cẩn thận tránh delete đi 2 NODE đó mà quên cập nhật sẽ làm đứt đoạn DSLK.

Địa chỉ của bất cứ biến nào cũng đâu thay đổi được chứ đâu riêng gì con trỏ @TuanNguyen

Anh mới nghe được thuật ngữ “miền giá trị” gần đây trong forum mình. Không hiểu thầy cô dịch từ cái gì mà ra chữ “miền giá trị” nhỉ. Trong các sách anh đọc gần đây, không có quyển nào nói về “miền giá trị” cả.

1 Like

có đó a. :slight_smile: &pa luôn mặc định và ko thể thay đổi. E ghi vậy cho thớt rõ thui chứ mất công nhầm với pa.

Biến nào có thể thay đổi được địa chỉ của nó thế? Hay em nhầm lẫn cái gì rồi? Ví dụ anh có biến kiểu int đi

int a;

Địa chỉ của a&a là cố định, không thể thay đổi được. Anh muốn nói là trong C, và anh nghĩ là trong tất cả các ngôn ngữ anh xài từ trước đến giờ, không có biến nào có thể bị thay đổi địa chỉ được.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?