【发布时间】:2018-08-16 21:32:23
【问题描述】:
这里对 C 非常陌生,我想我只是勉强掌握了指针的概念,但语法有点混乱,所以我很难理解这个表达式 x = (char *) &a; 的含义。
其余功能供参考:
#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 *) 对表达式有何影响?
【问题讨论】:
-
请问,你是从哪里得到这个代码的?
-
@octopus 没有从作为表达式 &a 的类型的 int * 类型到作为 x 的类型的 char * 类型的隐式转换。
-
它允许访问
int的各个字节。它是字节序相关的。 -
在使用
char*修改后访问int是未定义的行为。
标签: c pointers memory-address