【发布时间】:2013-08-24 08:56:06
【问题描述】:
以下程序在 gcc 上的输出是 50。 怎么可能,因为 x 是常量变量,而 *p 是 x 本身,因为 p 是指向 x 处的值的常量指针。 turbo c 在哪里给出编译器错误。 这是未定义的行为吗?请解释一下。
#include<stdio.h>
int main()
{
const int x = 25;
int * const p = &x;
*p = 2 * x;
printf("%d", x);
return 0;
}
【问题讨论】:
-
如果你这样做,它的未定义行为。
-
你的编译器不允许这样做,不允许从
const int*转换为int* const:ideone.com/AnuWLM -
删除了 C++ 标签:这不会编译为 C++。 C 编译器可能会发出可怕的警告。
-
int
main()... -
@Krishna 没有为错误的指针分配而磨损 gcc
p=&x?
标签: c