【发布时间】:2019-06-20 16:52:15
【问题描述】:
我正在阅读 C 规范,该规范在 6.5 Expressions 中声明
访问其存储值的对象的有效类型是对象的声明类型(如果有)。如果通过具有非字符类型类型的左值将值存储到没有声明类型的对象中,则左值的类型将成为该访问的对象的有效类型以及不修改该类型的后续访问储值。
谁能解释一下这是什么意思?我有一种模糊的感觉,它与指针和malloc() 有关,但在没有律师帮助的情况下,我只能做到这一点......
根据答案更新:我可以安全地执行此操作吗?
struct point {
int x;
int y;
};
int main() {
int *x = malloc(1000);
*x = 10;
printf("%d\n", *x);
struct point *p = x;
p->x = 5;
p->y = 10;
printf("%d %d\n", p->x, p->y);
}
我收到警告,但它适用于我的情况。能保证有效吗?
【问题讨论】:
-
其他人认为语言律师标签在这里可能是合适的,因为它直接询问标准的引用?
-
您能否编辑/评论以表明这是来自标准的哪个部分?
-
@CoffeeTableEspresso:已编辑
-
@CoffeeTableEspresso 6.5.17
标签: c