您的位置:首页 > 编程语言 > C语言/C++

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.转义字符

  

所有的转义字符和所对应的意义:
转义字符
意义
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位十六进制所代表的任意字符
二位十六进制
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: