【发布时间】:2021-05-09 01:34:45
【问题描述】:
int main() {
char *x;
*x = 'h';
printf("%p, %c", &x, *x); // prints nothing
return 0;
}
当我打印 x 的地址时,我得到一个真正的十六进制地址。但是分配后我无法打印 x 。为什么不这样做就不能赋值:
int main() {
char *x;
char y = 'y';
x = &y;
*x = 'h';
printf("%p, %c", &x, *x); //prints address and 'h'
return 0;
}
【问题讨论】:
-
你认为
x在第一个代码片段中指向哪块内存? -
同样的原因,你不能在分配之前使用任何其他变量的值。
标签: c pointers undefined-behavior dereference