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ì ạ 
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ì ạ 
cái này
int a = 257; // Ở đây a có giá trị là 257 có kiểu là nguyên
char *cp = (char *)&a; // còn đầu tạo một con trỏ cp con
trỏ này có kiểu (char) trỏ tới địa chỉ của (&a) mà a là một số nguyên
nên ta ép kiểu về (char*)
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. 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?