C++小知识(不断更新)
2015-04-03 12:45
169 查看
1.用new与delete成对使用,new[]与delete[]成对使用,只new不delete会造成内存泄露,一般new出来后用meset(lp,0,sizeof lp)将申请的内存清空,如果不这样,可能发生问题,因为系统给配给你的内存不一定都是NULL的。
2.c++中的分号:
如果一条语句中只包含分号(;),那这条语句就是空语句。
典型应用是:for(;;)
{ } //这种用法就是无限循环。
2. 一般用{}括起来的部分就是语句块,语句块相当于一条逻辑语句,在它里面定义的变量出来后都是无效的。
{}后面也不需要分号来结束,因为里面的语句都已经有分号结束了,{}相当于一个逻辑块,即逻辑块的限定符。
3. 自定义类型时{}后面必须要多加一个分号, 这是因为怕你在后面接着写某些标识符,如果不加分号的话,编译器会认为你是不是要把那些标识符定义为该类型?加上分号后,编译器就知道后面的语句和本句无关了,可以按照新的规则处理。
例如class 定义后需要加分号,否则编译器会报错…… followed by …… is illegal (did you forget a ';'?)
class Sample{ private: ……
public: ……
};
4.volatile:volatile的作用是:
作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
(1)中断服务程序中修改的供其它程序检测的变量需要加volatile;
(2)多任务环境下各任务间共享的标志应该加volatile;
(3)存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义
5.bcb导出dll注意事项:
创建动态链接库时,如果想你创建的动态链接库并非只用于Borland开发工具,那么就需要遵循发下规则:
(1).在导出函数的返回值和参数中不要使用Borland特有的数据类型和结构体,如AnsiString之类,请使用C/C++标准的数据类型或使用 C/C++标准数据类型定义的结构体(特别不要使用String数据类型,BCB
DLL向导生成的DLL工程文件中大篇幅的说明就是对此的说明,请自己查阅);
(2).请使用extern "C"命名约定,这样,生成的DLL中的导出函数,就不会使用C++的命名约定,而是使用的C命名约定,即导出函数不会名字分解,而是和你定义的函数相同;
(3).导出函数请使用WIN32 API的调用方式__stdcall(即WINAPI)或VC与BorlandC++的调用约定__cdecl,不要使用Borland特有的__fastcall调用约定,否则只有Borland开发工具才可以使用这些动态链接库;
6.转义字符
所有的转义字符和所对应的意义:
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
2.c++中的分号:
如果一条语句中只包含分号(;),那这条语句就是空语句。
典型应用是:for(;;)
{ } //这种用法就是无限循环。
2. 一般用{}括起来的部分就是语句块,语句块相当于一条逻辑语句,在它里面定义的变量出来后都是无效的。
{}后面也不需要分号来结束,因为里面的语句都已经有分号结束了,{}相当于一个逻辑块,即逻辑块的限定符。
3. 自定义类型时{}后面必须要多加一个分号, 这是因为怕你在后面接着写某些标识符,如果不加分号的话,编译器会认为你是不是要把那些标识符定义为该类型?加上分号后,编译器就知道后面的语句和本句无关了,可以按照新的规则处理。
例如class 定义后需要加分号,否则编译器会报错…… followed by …… is illegal (did you forget a ';'?)
class Sample{ private: ……
public: ……
};
4.volatile:volatile的作用是:
作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
(1)中断服务程序中修改的供其它程序检测的变量需要加volatile;
(2)多任务环境下各任务间共享的标志应该加volatile;
(3)存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义
5.bcb导出dll注意事项:
创建动态链接库时,如果想你创建的动态链接库并非只用于Borland开发工具,那么就需要遵循发下规则:
(1).在导出函数的返回值和参数中不要使用Borland特有的数据类型和结构体,如AnsiString之类,请使用C/C++标准的数据类型或使用 C/C++标准数据类型定义的结构体(特别不要使用String数据类型,BCB
DLL向导生成的DLL工程文件中大篇幅的说明就是对此的说明,请自己查阅);
(2).请使用extern "C"命名约定,这样,生成的DLL中的导出函数,就不会使用C++的命名约定,而是使用的C命名约定,即导出函数不会名字分解,而是和你定义的函数相同;
(3).导出函数请使用WIN32 API的调用方式__stdcall(即WINAPI)或VC与BorlandC++的调用约定__cdecl,不要使用Borland特有的__fastcall调用约定,否则只有Borland开发工具才可以使用这些动态链接库;
6.转义字符
所有的转义字符和所对应的意义:
转义字符 | 意义 | ASCII码值(十进制) |
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符''\' | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
相关文章推荐
- C/C++ 常用调试函数及技巧(不断更新中)
- C++:Debug经验总结(不断更新)
- ※C++随笔※=>☆C++基础☆=>※№推荐几本经典C++书籍 (不断更新中……)
- C++经典书籍推荐(不断更新中……)
- C++ 有价值blog索引-分类索引(不断更新)
- c++文件目录操作点滴总结(不断更新)
- C++ 有价值blog索引(不断更新)
- VS2010 c++ 错误的处理方法 (不断更新....)
- C++琐碎知识(不断更新)
- C++ 有价值blog索引(不断更新)
- c++学习笔记序列之经典处理程序汇总(不断更新中)
- C++学习(不断更新)
- C/C++ 疑难点(不断更新中……)
- C++中要注意的小细节(不断更新中……)
- C++中各种核心思想(将不断更新)
- C/C++基础知识收集(不断更新)
- c/c++笔试题、面试题(一)(不断更新中)
- C++ 学习积累-不断更新
- c/c++笔记(不断更新)
- C++笔试题(不断更新)