int func(int **a)
{
*a = NULL;
return 1234;
}
int main()
{
int x = 0, *ptr = &x;
*ptr = func(&ptr); // <-???
printf("%d\n", x); // print '1234'
printf("%p\n", ptr); // print 'nil'
return 0;
}
这是未定义行为的示例还是与序列点有关?为什么行:
*ptr = func(&ptr);
不像:
*NULL = 1234;
编辑:我忘了提到我用 gcc 4.7 得到了输出 '1234' 和 'nil'。