对 C 非常陌生,我想我只是勉强掌握了指针的概念,但语法有点令人困惑,所以我很难理解这个表达式的含义x = (char *) &a;
means.
其余功能供参考:
#include<stdio.h>
int main()
{
int a;
char *x;
x = (char *) &a;
a = 512;
x[0] = 1;
x[1] = 2;
printf("%d\n",a);
return 0;
}
更具体地说,为什么需要写x = (char *) &a;
而不仅仅是x = &a;
?添加的有什么作用(char *)
改变表达方式怎么办?
It's a cast。它告诉编译器它应该解释&a
as a char*
代替int*
这是它的实际类型。
不进行此转换会导致编译错误,因为类型不匹配,您基本上是在告诉编译器“我知道我在做什么,并且我确信这是一个char*
“从而让你接近类型X
就好像它是类型一样Y
.
通常,转换类型的指针X
to Y
并尝试通过类型取消引用它Y
将违反严格的别名规则但在这种情况下,因为我们通过别名char*
这是允许的。
在这种情况下,它允许您访问的各个字节int
(by x[]
),请注意,结果会根据机器的字节顺序(大或小)而有所不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)