现在的位置: 首页 > 综合 > 正文

Cpp小问题集锦

2018年10月15日 ⁄ 综合 ⁄ 共 646字 ⁄ 字号 评论关闭

1. 关于assert的用法,当assert函数后面的参数值为0 的时候,会报错,并终止程序。用到assert函数的话必须包含头文件assert.h。当然assert的功能可以被屏蔽,加一句:#define NDEBUG   即可屏蔽assert

2. 关于# 在宏定义中的用法,如果在输出的时候直接调用宏名就会直接输出宏名,而如果用引号括起来在宏名前面加上# 像这样:‘#X’  的话就会用实际参数替换X,代入使用。在宏的实参部分用## 可以连接字符串。当然这个字符串必须是被定义了的,否则在编译的时候就会报标识符未定义错误。

3. itoa是windows下转换一个int到一个字符串的函数,但是在跨平台中要使用sprintf函数才能将int格式化为字符串

4.const 比 #define的优势:const常量有数据类型,但是#define定义的符号没有类型,集成化的调试工具可以对const常量进行调试,但是却不能对宏常量进行调试

5. static 的作用: 1)修饰变量,可以修饰局部变量也可以修饰全局变量,被static修饰过的变量都存在于内存的静态区。静态全局变量的作用域仅限于定义该全局变量的文件. 静态局部 变量, 在函数体里面定义 的就只能在这个函数内部使用,由于被static修饰的变量存在于内存的静态区,故而当函数结束后,该变量的值不会被销毁,函数下次使用仍然能用到这个值

2)修饰函数  函数前加static 指的是这个函数是静态函数。但是本处的static的作用不是指存储方式,而是指的是该函数的作用域是本文件。

抱歉!评论已关闭.