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 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    một số chỗ không hiểu từ bài của langman.

    hôm qua mình đọc đoạn c++ thế này : (hình vẽ) để hiểu thêm về con trỏ ,
    đoạn code trong đó là int a=1987; int *p; *p = a;
    Theo mình được biết p chứa địa chỉ của một biến nào đó còn *p truy nhập (co chức năng như) một biến nào đó . Vậy trong ô nhớ của con trỏ lưu trữ địa chỉ của một biến truy nhập đến Ô NHỚ CỦA CON TRỎ thì viết p , nhưng ở đây tác giả viết *p , vậy là sao nhỉ


    *p tức là lấy giá trị của biến do con trỏ p trỏ tới có vẻ như tác giả viết *p = a thì ô nhớ của con trỏ = 1987 có nghĩa *p lấy giá trị của ô nhớ [IMG]images/smilies/icon_question.gif[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình đọc phẩn của langman thì hiểu, nhưng đọc câu hỏi của bạn thì không hiểu gì cả.
    Bạn muốn hỏi gì???

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ý của tác giả là muốn cho con trỏ p trỏ tới biến a thì phải dùng: int *p; p= &a, không được khai báo theo kiểu int *p; *p =a; thế thôi !

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    - để dễ hiểu, mình lấy ví dụ có đoạn code thế này:
    int a =1000; //(1)
    int *p; //(2)
    p = &a; //(3)
    *p = 1234; //(4)
    cout<<"a = "<<a; //(5)
    ==> đoạn code này in ra câu "a = 1234", tại sao thì có lẽ bạn đã hiểu, khi viết *p =1234 ở dòng 4 tương đương viết a =1234;
    - vấn đề sẽ nảy sinh khi mà bạn bỏ mất dòng 3 khỏi đoạn code. Khi đó con trỏ p vừa được khởi tạo và có giá trị là một số nguyên bất kỳ nào đó mà bạn chưa biết. lúc đó viết *p =1234 thì máy đọc giá trị của p hiện tại (ví dụ p đang là xxxx) => nó tìm ô nhớ có địa chỉ xxxx và đổi giá trị ô nhớ đó thành 1234. do xxxx là một số lung tung nên ô nhớ có địa chỉ xxxx có thể là một ô nhớ không thuộc vùng nhớ mà hệ điều hành cấp cho chương trình, việc sửa giá trị ô nhớ đó khá là nguy hiểm, kể cả nó có là ô nhớ nằm trong vùng được cấp phát của chương trình đi nữa. Mình hiểu như vậy đó, có gì sai thì các bạn cho ý kiến

 

 

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
  •