关于指针数据类型的强制转换,比如说int型转换为char型是不是只是将该指针的内存大小由4个字节变为一个字

2024-12-27 09:43:34
推荐回答(5个)
回答1:

内存大小并未改变,只是让char *o 指针指向了int 型的低位。

调试是硬道理!

程序:

#include

int main()

{

 int    i=789;

 char *o=(char *)&i;

 printf("%d, %c\n", i, *o);

 return 0;

}

调试结果:

回答2:

没有意义的,o指向的是i的地址,一个不确定的16进制数,转成char,表示范围减小,数据被截断,仍然不知道是什么值

回答3:

输出ASCII码值为i的字符,比如说i=97,按你说的转换后就会输出a字符

回答4:

*0这个指针型的空间里存的int i的地址。
如果把i强制转换成char型。
是相当于又开辟了一个char 的空间。
你输出i就是i。
输出char型就是char型。

回答5:

1楼说的差不多,但是输出的结果和你这个板子的存储方式是有关系的。你需要看一些大端存储和小端存储的知识。输出的结果不一定是int的最低位,也可能是最高的两位,你自己代码试试。