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;
}
Run Code Online (Sandbox Code Playgroud)
这是一个未定义行为的例子还是与序列点有关?为什么行:
*ptr = func(&ptr);
Run Code Online (Sandbox Code Playgroud)
表现不像:
*NULL = 1234;
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了提到我用gcc 4.7获得输出'1234'和'nil'.