温故知新
来源:互联网 发布:nginx php 张宴 编辑:程序博客网 时间:2024/04/29 18:54
主要是一些容易忽视或者不熟练的知识点
1.
printf从右向左压栈
printf(“%d,%d\n”,*ptr,*(++ptr));
2.
用一个表达式判断2的n次方,但是不准用循环
采用2的n次方的性质
x&(x-1)==0则是2的n次方
3.
x&y是x和y相同位的一半
x^y是取x和y不同位
x^y>>1则是x^y不同位的一半
4.
C和C++
C语言是一种结构化的语言,重点在于算法和数据结构。
C++首先考虑如何构造一个对象模型,让这个模型能够契合与之对应的问题域
5.用一个宏定义FIND求一个结构体struc里某个变量相对struc的偏移量
#define FIND(struc,e) (size_t)&(((struc*)0)->e)
6.const(1)定义常量(2)修饰函数参数以及返回值提高程序的健壮性
7.const成员函数中,用mutable修饰成员变量名后,就可以修改类的成员变量了
8.sizeof计算栈中分配的大小,所以如果类中有静态变量,因为静态变量是放在全局数据区的,所以计算类大小的时候不会加上静态变量的大小
int b = sizeof c; 如果c是变量名那么这样写也是可以的但是如果sizeof后面是类型则必须加括号
9.const常量赋值时必须初始化
10.注意强转后变量的偏移量问题
class A
{
public:
A() { m_a = 1; m_b = 2; }
~A() {};
void fun() { printf(“A::::a===%d b======%d\n”, m_a, m_b); }
private:
int m_a;
int m_b;
};
class B
{
public:
B()
{
m_c = 3;
}
~B() {};
void fun() { printf(“B::::%d”, m_c); }
private:
int m_c;
};
11.继承类的覆盖问题
class A
{
public:
int a;
A()
{
a = 1;
}
void print()
{
printf(“%d”, a);
}
};
class B :public A
{
public:
int a;
B()
{
a = 2;
}
};
int main()
{
B b;
b.print();
cout << b.a << endl;
return 0;
}
12.虽然用空指针也会使程序崩溃,但是空指针的情况下造成的崩溃是一种可预料的崩溃,这样调试起来会方便得多。
13.
句柄和指针其实是两个截然不同的概念。windows系统用句柄标记系统资源,隐藏系统的信息,你只要知道有这个东西,然后去调用就行了,是个32位的整型,指针标记某个物理内存地址,两者是不同的概念。
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 温故知新
- 【小结】温故知新
- hibernate温故知新
- CSS温故知新
- 今日温故知新
- 今日温故知新
- 今日温故知新
- CentOS7 yum安装Java+Apache(httpd)+Tomcat并开启自启动
- selenium使用testNG测试框架编写webdriver脚本_05
- android 启动模式 singleTask 注意事项
- 悟透JavaScript(理解JS面向对象的好文章)
- Android的Activity的小知识点
- 温故知新
- OnCollisionEnter2D 用法
- HDU 1272 小希的迷宫(dfs)
- 前端自动化构建工具Webpack开发模式入门指南 (网上看到的,写得很详细)
- Linux下的文件和文件夹
- gdb调试器常用指令
- Eclipse修改工程后项目无法启动
- JVM源码分析之Java类的加载过程
- SPF算法计算过程--例