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ì ạ

Dương Nylghara viết 20:20 ngày 30/09/2018

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)

viết 20:26 ngày 30/09/2018

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;

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ì ạ

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.

Bài liên quan
0