30/09/2018, 18:18
Tại sao con trỏ kiểu char lại trỏ được tới kiểu int?
có ai giải thích cho em cái phần này với
int a = 257;
char *cp = (char *)&a;
cout << *cp;
a là 1 int thế mà con trỏ lại là char mà vẫn chạy
khi chạy lại ra cái mặt cuwoif nhưng đổi giá trị của a đi thì lại không có gì ạ
Bài liên quan
cái này
còn in ra thì ra một kí tự (*cp) là lấy ra giá trị mà nó đang trỏ tới…có kiểu là
(char)
cái này là ép kiểu của con trỏ, hay ở chỗ có thể ép kiểu con trỏ về tất cả các kiểu con trỏ khác nhau, ví dụ như struct chẳng hạn.
code đầy đủ của bạn là thế này, ép con trỏ *pa về kiểu char, lưu vào con trỏ mới *cp:
int a = 257;
int *pa = &a;
char *cp = (char *)pa;
là do cmd không hiển thị đc chứ k phải là k có gì đâu. bạn thử làm 1 vòng for cho a chạy từ 1 đến 256 xem, chú ý a = 1, 65, 66… nhé, có liên quan tới bảng mã ASCII hay dùng để xử lí xâu kí tự đấy.