- 问题
运行下方代码会发现程序出错:incompatible pointer to integer conversion assigning to ‘int’ from ‘int *’;。
这引出了一个古老的问题:指针修饰符的位置。
int a = 1;
int* m, n;
m = n = &a;
- 分析
第二行定义了一个指向整形的指针m和一个整形变量n。
注意:有人可能认为这里定义了两个指向整形变量的指针m和n,但实际上不是,具体可以参考这位博主搬运的资料:2.6 修饰符的位置。 - 正确写法
int a = 1;
int *m, *n;
m = n = &a;