- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CC经常记不得的地方
?
C/C++经常记不得的地方
1、常量指针VS指针常量
const int* 和int const* int 一样,就是常指针 也就是它所指向的数据(在这是int)是常量,它自己的数据类型是const int*
1? int*?const?p;???//?指针常量?指针p指向的值不可修改?? const修饰的是 p 2? ? 3? const?int*?p;???//?常量指针?指针p不可修改????????? const修饰的是 *p 4? int?const*?p;???//?常量指针?指针p不可修改 2、指针数组VS指向数组的指针
指针数组,是指数组元素为指针的数组
1? int*?P[N]; 指向数组,的指针指的是数组中的每个元素是一个指针
1? int?(*P)[N]; 3、sizeof数组和指针
1? int?arr[5]; 2? coutsizeof(arr);????//?输出是20 因为是sizeof(int)*5
可以用通过它来计算一个数组的元素个数
当数组是函数的参数时,sizeof对它不可用
因为指针本身是32位四个字节的
所以
1? char*?p;? 2? sizeof(p)?==?4; 标准C++中 其返回类型为size_t
标准C++的 sizeof还可以作用于对象
sizeof引用 返回引用对象的存储大小
sizeof指针的解引用 返回解引用的空间大小
4、数组引用
1? int?(arr)[N]; 5、指向函数的指针
1? int?(*fun)(int,?int) 6、函数接口中的指向指针的指针
7、 || 和 操作符第一个操作数往往能决定最终结果 从而忽略第二个操作数
8、%的操作数要是整形
9、!对于非0操作 结果是fasle
10、判断bool的变量val是否成立时候 通常用if(val)
11、位异或是^ 就是位的非进位加法
12、*p++相当于 *(p++) 由于++在后 还是对原先的p进行解引用的
13、if((i = 5) 0) 先赋值 再判断 注意为什么加括号
14、i = p = 7; 这里是右结合的
15、*iter.empty();? . 的优先级高一些 所以是错误的表达
16、iter++-empty(); 先empty再++
17、条件表达式的优先级相当低
cout(i j ? i : j);
cout(i j) ? i : j;?? // 等价于cout ? i : j
couti j ? i : j;?????? // 错误 cout j ? i : j
18、优先级的判断
19、new和delete
int *p = new int(10);
int *p = new int[10];
int *p = new int[10](10);
delete是针对内存的 不是new出来的内存就无法释放了
int i;
int *p = i;
delete p;? // error 但是大部分编译器还能通过
如果p = NULL;
delete p也是安全的
const int *p = new const int(1024);
new出来的const不可被修改但同样可以被删除
delete p;
20、 可变参数
1? void?va_start(?va_list?arg_ptr,?prev_param?); 2? type?va_arg(?va_list?arg_ptr,?type?); 3? void?va_end(?va_list?arg_ptr?); ?
1? void?simple_va_fun(int?i,?...) 2? { 3? ??va_list?arg_ptr; 4? ??int?j=0;? 5? ??va_start(arg_ptr,?i); 6? ??j=va_arg(arg_ptr,?int); 7? ??va_end(arg_ptr); 8? ??printf(%d?%d/n,?i,?j); 9? ??return; 10? } 1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数的指针。?2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个参数是你要返回的参数的类型,这里是int型。?4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获取各个参数。
21、main的参数
main(int argc, char*arg
您可能关注的文档
- 华元OA人事培训日.ppt
- 项目三AutoCAD二维与三维视图.ppt
- Matlab语言及其在电子信息工程中的应用:第2讲(V1.1).ppt
- java面向对象程序设计第十六章.ppt
- 14、系统集成技术部分.ppt
- 015年新安全法培训知识竞赛试题.doc
- 2013二建法规冲刺.ppt
- 03FIDIC基础理念.ppt
- 常见的几种脑电图机.docx
- Maven入门与学习.doc
- 2024年03月浙江金华义乌市公安局招考聘用184名警务辅助人员笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 2024年03月河北省科学技术厅事业单位选聘工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 2024年10月贵州兴仁市委政法委公开招聘青年见习人员笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 2024年03月民政部所属事业单位2024年度公开招考31名应届毕业生笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 2024年03月广东肇庆封开县教育系统赴高校招考聘用教师64人笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- [重庆]2025年重庆忠县教育事业单位招聘62人笔试历年参考题库附带答案详解.doc
- 【兵团】2024年新疆生产建设兵团第七师胡杨河市第七师医院医共体招聘工作人员133人笔试历年典型考题及考点剖析附带答案详解.docx
- 2024年10月北京高校大学生就业创业指导中心公开招聘3人笔试历年典型考题(历年真题考点)解题思路附带答案详解.docx
- 【南阳】2024年河南南阳市方城县招才引智事业单位招聘工作人员2人笔试历年典型考题及考点剖析附带答案详解.docx
- 【枣庄】2024年山东枣庄市台儿庄区青年人才优选20人笔试历年典型考题及考点剖析附带答案详解.docx
文档评论(0)