一些老师上课随口讲的小知识点
数据类型:
六种基本数据类型:整型:int short long char
浮点型:float double
int4字节 short2字节 long((4字节)(32位)8字节(64位)) char1字节
浮点型:float(4字节):小数点后6位 double(8字节):小数点后15位
int:-2147483648~2147483647,short:-32768~32767,char:-128~127
sizeof()返回值是unsighed
char a = -5,unsighed char c = -3; a+c = ?
-5:
- 原码:1 0 0 0 0 1 0 1
- 机械码:1 1 1 1 1 0 1 1
机械码就是把其正数的原码按位取反相加
相加结果就为-5和3的机械码相加
11111011
00000011
11111110
所以a+c=254
如果一个小类型和一个大类型比较小类型(char)会向大类型提升(int)
%02x:不足2位用0补 例如:1->01 %nf:打印小数 (小数别名:实型) %le:按照科学计数法打印小数 例如:1.2e+12345
switch()括号里只能放整型和整形表达式不能放float和double
case:只能放整数常量和整数常量表达式
return 0 作用:告诉程序的激活者,该程序执行到此处正常结束
流程结构:顺序、选择、循环
do while():效率最高 while比for 运行效率好一点点
在C++中
|
|
在C语言中
b = 5;//整个表达式返回值是5
b = 0;//返回值是0
while(b = 0)//一次循环都不会执行
C++常考关键字
static
const
volatile
static和全局变量都在同一内存区域
static:作用域只能在定义的文件中使用
全局变量:作用域可以跨文件使用
const:在C++里叫常量
在C里叫只读变量
volatile:防止编译优化,保证对特殊地址的稳定访问
内存
内存的三种操作:读、写、取地址
内存常用区:堆
栈
字符常量区
代码区
静态区(全局区)
数组:是一块类型相同的连续空间
数组名字在一般情况下代表数组首元素首地址,或者取地址,或者sizeof()
代表整个数组.
[ ]作用:
- 定义数组
- 当形参传递时相当于*
- 间接访问,偏移
*
作用
- 间接访问
- 乘法
- 定义指针
#define
宏定义是单纯替换,替换之前不会进行任何计算
宏定义用到乘法时: a*b →((a)*(b))
它是在预编译完成的各种事件,所以它属于编译期机制
缺点:
- 调试时不可见
- 数据无类型
多态
- 编译期多态(静态多态)→运算符重载,函数重载
- 运行期多态(动态多态)→虚函数
字符串
typedef:对已经存在的数据类型重命名。strcpy
和strcat
末尾加\0strncpy
和strncat
末尾不加\0
atoi
是系统函数itoa
不是系统函数
一个数字以一个0为开始的话,表示8进制
例如:0123(表示八进制123) = 83(十进制)
‘\064’=>’4’ => ‘\52(十进制)’ => ‘4’
strtok
字符串分割strdup
字符串复制(传一个原串,自动生产目的串)
匈牙利命名法:函数什么作用就起什么名字
驼峰命名法:首字母大写函数名用动词,如果名字太长,缩写的话元音(a e i o u)和不发音的字母省略。
函数名就是入口地址。
文件操作
- fopen:打开文件
- fclose:关闭文件
- fread:读取文件
- fwrite:写文件
- fseek:文件指针移动
有一个数组,其他元素出现偶数次,就有一个出现一次,找到这个数的快速方法
答案:每个元素相互异或,最后得到的就是那个数字。