1.sizeof
sizeof(0) == sizeof(int) sizeof(0L) == sizeof(long) sizeof(0LL) == sizeof(long long) int array[5]; sizeof(array) == sizeof(int) * 5
2.大端小端
大端低字节高地址,高字节低地址;小端低字节低地址,高字节高地址(TCP/IP)采用大端
某32位数据在内存中的布局为(左为低地址)
大端读数为0x12345678;小端读数为0x78563412
4.结构体和数组当作参数传递到函数
结构体会拷贝一个副本给函数,在函数内的修改对原始数据不产生影响;
数据传递的是首地址,函数内的修改对原始数据有影响。
5.C宏
定义一年有几秒(忽略瑞年)
#define SECONDS_PER_YEAR (365 * 24 * 60 * 60)UL
二数求小的宏
#define MIN(x, y) ((x) > (y) ? (y) : (x))
6.C中基本类型的定义
a) int a; // An integer b) int *a; // A pointer to an integer c) int **a; // A pointer to a pointer to an integer d) int a[10]; // An array of 10 integers e) int *a[10]; // An array of 10 pointers to integers f) int (*a)[10]; // A pointer to an array of 10 integers g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
7.关键字static的作用
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
4). 在类内,静态函数表示不需要实例就可以调用
8. 引用与指针的区别
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
2) 不存在指向空值的引用,但是存在指向空值的指针.
9.死循环的写法
1)while(1){} 2) for(;;){} 3)Loop:{}goto Loop;
10.C++ String类的实现
#include <iostream> #include <string.h> using std::ostream; class String { friend ostream& operator<<(ostream& out, const String& str); public: String(const char* str); //Constuctor String(const String& other); ~String(void); String& operator=(const String& other); char* data(void) const; private: ostream& Print(ostream& out) const; char* _data; }; ostream& operator<<(ostream& out, const String& str) { return str.Print(out); } String::String(const char* str) { if (str == NULL) { _data = new char[1]; // if _data == NULL throw Exception _data[0] = '