Giá trị của con trỏ hằng vẫn có thể bị thay đổi

Ai có thể giải thích cho e về con trỏ được không?

#include<stdio.h>
int  main()
{
    int x  =5;
    const int* p = &x;
    printf("%d\n", *p);
    x = 6; // chạy được
   *p = 100;// error
    printf("%d\n", *p);
}

Đọc tài liệu thì thấy bảo giá trị mà con trỏ hằng trỏ đến không thay đổi được. Nhưng khi thay đổi biến X mà con trỏ trỏ đến thì dữ liệu đó vẫn bị thay đổi, chứ đâu phải là không thay đổi được.

Thì bạn gán *p = 100 ko chạy đó :smiley:

3 Likes

Bạn khai báo const int *p = &x; chứ có phải là const int x = 5; đâu.
Khi có toán tử const trc variable_type thì nghĩ là biến đó không thể bị thay đổi.
Cơ mà bạn qua markdown để học cách format source code nha. :slight_smile:

2 Likes

Thế thì phải phần giải thích thêm là không thể thay đổi giá trị qua con trỏ. Nhưng có thể thay đổi giá trị qua biến mà con trỏ đó trỏ tới. vì sau khi thay đổi biến X thì giá trị của con trỏ trỏ tới cũng bị thay đổi luôn. Đúng không đại ka???. :))

1 Like

Đúng vậy :smiley: và p[100] cũng ko gán được.

4 Likes

Biến x vẫn gán bình thường. Con trỏ p mới ko thao tác được thôi

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