我查看了 21st Century C 一书中的一个例子:
// constfusion.c
//
#include <stdio.h>
int main() {
int *var;
int const **constptr = &var;
int const fixed = 20;
*constptr = &fixed;
*var = 30;
printf("fixed = %i, *var = %i\n", fixed, *var);
}
它应该输出fixed = 30, *var = 30
来说明为什么将int **
分配给const int **
是错误的,而是输出fixed = 20, *var = 30
!
我正在使用clang -O0 constfusion.c -o constfusion
进行编译。我的设置:
$ clang --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix
是编译器还是我?