1,最低有效字节在最前面的方式,成为小端法;最高有效字节在最前面的方式,成为大端法。
2,const char*类型是指向常量的指针,此时const所在的位置,在“*”的前面,const在char的前面或后面都是一样的。对一个利用const char*类型的常量指针来说,不能修改其指向的内存中的内容,但可以修改其指向的内存地址。
char* const 类型定义的是一个指针常量。对于指针常量,必须在其定义的同时赋值,指针常量表示指针本身是常量。
3,文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。
3,memset: 需要的头文件:在C中 ,在C++中;
void *memset(void *s,int ch,size_t n):函数解释:将 s 中前 n 个字节用 ch 替换并返回 s 。
4,#define和const的区别:#define是一个真常量,而const却是由编译器判断实现的常量,是一个假常量。在实际中,使用const定义的变量,最终还是一个变量,只是编译器内进行了检查,发现有修改则报错。
5,我们所说的“硬盘分割”就是修改这个硬盘分区表。由于MBR区块的容量有限,当初设计的时候只设计成4个分割记录,也就是说一个硬盘最多可以有4个(Primary+Extended)区,其中Extended最多只能有一个。
6,每一个在Unicode里的字符是16位宽而不是8位宽,8位值在Unicode里面是没有意义的。与此相反,在双字节字符集中,我们仍在处理8位值。在双字节字符集里,某些单字节本身就定义了一个字符,而另一些字符则需要一个额外字节才能完全定义一个字符。
7,在使用宽字符的时候,字符串的字符长度并没有改变,改变的只是字节长度。
8,利用“抑或”实现两个数值的交换值得注意的地方:当a,b指向同一个地址时,进行交换后,得到的为0.原因“:A^A=0
#include
void exchange(int *a,int *b);
int main()
{
int a=4;
exchange(&a,&a);
return 0;
}
void exchange(int *x,int *y)
{
*y=*x^*y;
cout<<*x<<' '<<*y<
*x=*x^*y;
cout<<*x<<' '<<*y<
*y=*x^*y;
9,指向指针的指针:
#include
#include
int main()
{
/*int **p;
p=new int*[3];
*p=new int[4];
p[0][0]=67;
cout<
char **p;
p=new char*[3];
*(p+1)=new char[6];
strcpy(*(p+1),"hello");
cout<
return 0;
}
10,整数的计算机运算满足人们所熟知的真正整数运算的定律;浮点数有完全不同的数学属性,由于表示的精度有限,浮点运算是不可结合的。
11,有符号数和无符号数之间的转换:
(1)对大多数C语言的实现而言,处理同样字长的有符号数和无符号数之间相互转换的一般规则是:数值可能会改变,但是位模式不变。
(2)将一个无符号数转换为一个更大的数据类型,只需简单的在表示的开头添加0,这种运算称为零扩展;将一个补码数字转换为一个更大的数据类型可以执行符号拓展,规则是在表示中添加最高有效位的值的副本。
12,强制类型转换的结果保持位值不变,只是改变了解释这些位的方式。
13,一个算术运算溢出,是指完整的整数结果不能放到数据类型的字长限制中去。
14,模数加法形成了一种数学结构,称为阿贝尔群。也就说,他是可交换的和可结合的。它有一个单位元0,并且每个元素有一个加法逆元。
15,
#include
int main()
{
char ch1="abcd"[0];
char ch2="abcd"[0];
char *p="abcd";
cout<
cout<<"testing"[4]<
cout<<(p=="abcd")<
return 0;
}
16,将一个无符号数转换为一个更大的数据类型,我们只需要简单的在表示的开头添加0,这种运算成为零拓展;将一个补码数字转换为一个更大的数据类型可以执行符号拓展,规则是在表示中添加最高有效位的值的副本。
17,
#include
#include
//当通过基类的指针去删除派生类的对象,而基类又没有虚析构函数时,
//结果将是不可确定的。这意味着编译器生成的代码将会做任何它喜欢的事。
class Base
{
public:
~Base() {printf("\nBase::destructor.");}
};
class Derived: public Base
{
public:
virtual ~Derived(){printf("\nDerived::destructor.");}
};
void fun()
{
Base* p = new Derived;
delete p;
}
int main()
{
fun();
//getchar();
}
阅读(1976) | 评论(0) | 转发(0) |