【发布时间】:2017-06-09 13:19:44
【问题描述】:
我来自 Java 背景。我正在学习 C,其中我通过代码 sn-p 进行从 int 到 char 的类型转换。
int a=5;
int *p;
p=&a;
char *a0;
a0=(char* )p;
我的问题是,为什么我们使用 (char *)p 而不是 (char)p。
我们只是将 4 字节内存(整数)转换为 1 字节(字符),而不是与之相关的值
【问题讨论】:
-
p是整数a的指针值
-
不,您将
p指向的a地址的n bytes转换为具有相同宽度的a0字符指针 -
类型必须匹配。
-
没有理由将
int*转换为char*。这将导致各种签名错误。也许您打算使用unsigned char*或uint8_t*?
标签: c pointers typecasting-operator