1 编译出错
一段时间没写 c/c++ 的程序了, 最近公司一个项目底层的核心算法是用 c++ 写的, 由于需要定制一个功能, 要在看懂 1.0 代码基础上, 再做功能扩展 IDE 选择了 Code::Blocks, 它是跨平台的, 编译器是 GNU c++, 因此可以运行在 linux 系统上
在编译程序时, 总是出现几个非常典型的问题, 特在此总结下
2const 限定符
const 限定符赋值问题, 经常容易出错
例如:
- const char *pa;
- char *pb;
- pb = pa; // wrong !
- pa = pb; // ok !
为什么?
一个技巧: 看下变量的属性, pa 带有 const,pb 没有 const, 因此, pa 赋值给 pb, 也就是属性多的赋值给属性少的, 不允许反过来是可以的
3 两个易混淆的优先级
1) 是数组还是指针?
int *pa[];
是指针, 还是数组?
记住:[]的优先级高于 *, 所以相当于:
int *(pa[]);
因此, 它是元素类型为指针的数组
2)是函数还是函数指针?
int *fp();
函数 () 优先级高于 *, 所以相当于:
int * ( fp() );
4 谁是 const?
以下几种表达:
- const int* pa;
- int cont * pb;
- int* const pc;
最后一种情况, 指针是 const, 前两种是指针指向内容是 const.
长按, 识别二维码, 加关注
来源: https://mp.weixin.qq.com/s?__biz=MzI3NTkyMjA4NA==&mid=2247485231&idx=1&sn=3d41f1c51f5aa758e6a45890497d58eb&chksm=eb7c2ae4dc0ba3f28565d6affbbcd78539b6ee6694d551d1e5dafab4ffff115481b112dc7cac#rd