- 浏览: 512673 次
- 性别:
- 来自: 北京
最新评论
-
jkxydp:
算法运行的结果根本就不对。
BM算法. -
soarwindzhang:
感谢博主的分享,我今天看了您的UFSET非递归的路径压缩时感觉 ...
并查集 -
zhangning290:
楼主好像只考虑了坏字符规则,。没有考虑好后缀
BM算法. -
lsm0622:
文字描述有错误 误导新学者
求有向图的强连通分量(scc):Tarjan算法 -
knightchen:
博主,你太强了!这篇文章对我学习C++多线程很有帮助!谢谢
并发学习之一_windows下ZThread在CodeBlocks上的安装与配置
文章列表
1,class members以它们在class内的声明次序来初始化,和它们在member initialization list中出现的次序完全无关.
2,这么做的原因:
对象数据成员的析构总是以和其构造相反的次序被调用,如果按照初始化列表的次序构造,那么编译器必须跟踪每个对象内members初始化的次序,这将带来昂贵的成本.
1,如果class含有const成员或引用reference,由于它们只能被初始化,而不可能被赋值.
因此必须使用初始化列表.
2,出于效率上的考虑:
对象的构造分两个阶段:
(1)data member初始化.
(2)执行constructor.
如果有一个string str成员.可能会被调用两次:
一次初始化阶段,dafault constructor,一次constructor阶段,调用assignment运算符.
3,注意:static class members绝不应该在一个class's constructor中被初始化.
static members在每一个程序执行时,只应该被 ...
1,
定义两个对象:
String a("Hello");
String b("Word");
如下所示:
执行b=a;后,变为:
这样的状况至少存在两个问题:
(1)b原先指向的内存没有被释放掉,内存泄露.
(2)a和b的指针指向相同的字符串,当其中一个离开生存空间,其destructor会删除内存,另外一个悬垂指针.
如:
#include<iostream>
using namespace std;
class String
{
public:
String(const char* value);
...
异常控制流(ECF)
1,这里异常指允许程序进行非本地跳转(违反通常的调用/返回栈规则的跳转)。
2,异常处理完成后,发生三种情况:
(1)执行当前指令Icurr
(2)执行下一条指令Inext
(3)处理程序终止被中断的程序。
3,每 ...
1,加载器创建了存储器映像,将可执行文件的相关内容拷贝到了代码和数据段。
接下来加载器跳转到程序的入口点:_start的地址。
_start处的启动代码是在目标文件ctrl.o中定义的,对所有的C程序都是一样的。
0x080480c0 <_start>:
call _libc_init_first
call _init
call atexit
call main
call _exit
首先从.text和.init节中调用初始化例程,启动代码调用atexit例程,它注册了一系列在调用exit函数时应该调用的程序。
然后启动代码调用应用程序的main程序,开始执行我们的c代码。 ...
1,文件元数据。
stat结构体:
struct stat
{
mode_t st_mode; //文件对应的模式,文件,目录等
ino_t st_ino; //i-node节点号
dev_t st_dev; //设备号码
dev_t st_rdev; //特殊设备号码
nlink_t st_nlink; //文件的连接数
uid_t st_uid; //文件所有者
gid_t st_gid; //文件所有者对应的组
off_t st_size; //普通文件,对应的文件字节数
time_t st_atime; //文件最后被访问的时间
time_t st_mtime; ...
1,一个静态内容的http事务:
kmplayer@kmplayer:~$
//客户端请求
telnet www.baidu.com 80
//网络应答
Trying 119.75.213.51...
Connected to www.a.shifen.com.
Escape character is '^]'.
//HTTP请求 形式:<method><uri><version>
GET / HTTP/1.1
host: www.baidu.com
//空行表示请求报头的结束
//HTTP响应 形式:<version><status ...
1,语言的缺陷:多做之过,少做之过,误做之过.
2,多做之过:缺省的全局作用域.
3,少做之过:
(1)C语言中的符号重载:
static
函数内部:静态变量;
函数级别:该函数只对本文件可见.
extern
用于函数定义:全局可见(缺省情况)
放在变量前:声明,在其他地方定义.
(2)优先级问题:
建议:在C中牢记两个优先级就够了,乘除先于加减,在涉及其他操作符时,一律加上括号.
(3)gets:
Internet蠕虫病毒.
1,数组char a[4][6];
访问元素a[i][j];
编译器符号列表中,a的地址9980
(1)取i的值,乘以行宽row,加到9980上. 9980+i*row;
(2)取j的值,乘以元素factor的宽度,9980+i*row+j*factor;
(3)从地址(9980+i*row+j*factor)中取出内容.
2,数组char* a6];
访问元素a[i][j];
编译器符号列表中,a的地址9980
(1)取i的值,乘以4,加到9980上. 9980+i*4;
(2)取j的值,乘以元素factor的宽度,9980+i*4+j*factor;
(3)从地址(9980+i*4+j*f ...
1,char s[]和char* s等价的情况:作为函数定义的形式参数(仅限于这种情况).
实例:
#include <stdio.h>
int main()
{
char a[]="abcefgh";
printf("%p %s\n",a,a);
//这里既可以把a作为数组名,也可以作为一个地址.
return 0;
}
2,对数组的引用如a[i]在编译时,总是被编译改写成*(a+i)的形式.
在表达式中,指针和数组是可以互换的,因为他们在编译器那里的最终形式都是指针,并且都可以进行下标操 ...
第四章 数组和指针并不相同
- 博客分类:
- C专家编程
1,先看一个常见的错误:
file1:
int mango[100]; //定义mango为一个数组.
file2:
extern int* mango; //声明mango为一个指针.
基于错误的认识"数组定义等同于指针的外部声明"
正确:
file2:
extern int mango[];
2,地址(左值)和地址的内容(右值)之间的区别
x=y
(1)x的含义是x代表的地址;被称为左值;左值在编译时可知,表示存储结果的地方.
(2)y的含义是y代表的地址的内容;被称为右值;右值直到运行时才知道.
注:关键之处在于每个符号的地址编译时可知,如果编译器需要一个地址可直 ...
1,我的总结:
【.】匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。
【$】匹配以此字符串结束行的结束符。
【^】匹配以此字符串结束行的结束符。
【*】匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。
【\】这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配(将一些特殊的符号正常化使用)。
[A-Za-z]可以匹配任何大小写字母
【\< \>】匹配词(word)的开始(\<)和结束(\>)。例如正则表达式\<the能够匹配字符串"for the wis ...
1。a.out:“assembler output(汇编程序输出)”的缩写形式。
2,段的概念:
(1)在UNIX中,段表示一个二进制相关的内容块。
命令:size test(可执行程序),返回文件中的三个段。
text data bss dec hex filename
1196 276 188 1660 67c test
(2)Inter x86架构:
地址空间被分成64K大小的区域,称之为段。
3,使自己确信:
(1)数据段保存在目标文件中。
(2)BSS段不保存在目标文件中(只是记录BSS段运行时所需要的大小)
...
1,8086内存地址的形成经过:取得段寄存器的值,左移4位,加上16位的偏移地址(段内地址)。
在Microsoft C中,fan关键字表示指针存储了段寄存器的内容和偏移地址。
near关键字表示指针只存储16位的偏移地址,它的段地址使用当 ...
1,类型提升:
在C的表达式中,每个char都被转换为int,每个表达式中的float被转换为double。
由于函数参数也是一个表达式,所以当参数传递给函数时,也会发生类型转换。
如:
sizeof(‘a’);
C结果:4
C++结果:1
printf(“%d”); %d可以适用short,char和int,因为他们都会被转换为int。
2,隐式类型转换是语言中的一种临时手段,起源于简化最初的编译器的想法。
把所有的操作数转换为统一的长度极大地简化了代码的生成。这样压到堆栈中的参数都是同一长度,所以运行时只需要知道参数的数目,而不需要知道它们的长度。
3,编写链表法解决hash,可以先让h ...