红衣

红衣

是从什么时候开始有了对这座寺庙有印象的呢。记忆中的影像很模糊,仅仅是有一个高大的人影走在前面,我旁边都是像我这样的孩子,吵吵闹闹的。后来不知道怎么的,就来到这座寺庙。

寺庙坐落于深山中,四边都是活了百年的大树,要几十个我才能合抱的大树。树木高耸入云,叶子一层层的叠着挤着,阳光完全射不进来,地上的叶子不知道有多厚,我们几个伙伴一起挖,挖了一个上午,大家都累趴下了,还没有挖到泥土,后来我们再也没有尝试过,留下的大坑也很快被新的落叶填平了。

寺庙里大都都是我这样大小的孩子,只有一个扫地的老爷爷管理着我们,我记得以前他还没有那么多的白胡子,现在越来越来多,我们所知道的一切关于这里的信息全是他告诉我们的。他总是在扫着寺庙,一天到晚从未停歇,也不见他练功。不过我想要是他停下了,寺庙恐怕会被叶子给埋了吧。特别是后院的那一大片菜园,如果它都被淹没了,那我们什么吃的都会没有,所以我们很小心那块宝地,基本上不去那里玩,都是认真地除草除虫。

寺庙外面很危险,这一点不用扫地僧跟我们说,我们都知道。因为晚上,我们睡不着觉的时候就会飞上屋顶,看星星看月亮,星星很奇怪,总是在跑。我们一晚上能听到无数的野兽在咆哮,响彻天地,天空中也一直有着飞禽在盘旋。刚刚来寺庙时,很多人睡不着觉,后来也就慢慢习惯了。有一次,我们一起看星星的时候,有一个同伴没有坐稳,从屋顶上滚了下去,一直滚到了寺外,然后什么声音都没有了。我想他应该是没有事的,外面的落叶这幺厚,绝对不可能有什么事。

可是第二天他没有出现了,我们去问扫地僧,他说,他死了。话一刚落音,便在十几个小孩中引起轩然大波,哭的哭,逃的逃,逃的都被扫地僧一手拈了回来。

他说,你们想活下去,一定要练功,你们想离开这个地方,也一定要练功。今天开始,你们去练功吧,从东边开始,有十八个房间,代表十八种不同的武艺。另外,你们今天开始去寺外看看吧,练好轻功能让你们活下去。

扫地僧说完后又拿起扫帚扫起叶子来,全然不管还在原地错愕的我们。那时我只是觉得,扫地僧是那么的无情,又觉得自己长大了好多。

此后的日子便是穿梭在那十八个房间,大家都想离开这个地方,大家都很努力的在练功,扫地僧也给我们加了伙食,每天我们都能吃的很饱,然后第二天投入到辛苦的练功中。

练功之余,我们对寺外也有了莫大的兴趣,经常一起出去探索出路。寺外很多猛兽,我们十几个人合力,能够打死的便打死了,遇上不能打死的,便用轻功逃走了。可每次总会有一个人会逃不掉,总会死在外面。

我没有悲伤过,只是在想,我要变强,才能逃出这里,才能活下去。

十几年的光阴在我们一天天的练功和一次次的杀伐与逃亡中匆匆溜走。从十几个的小团伙变成了现在只有五个人的小队,我们每一次都在死亡线上逃回来。

有一次,我们一起杀出一条路,突破了层层森林,看到很远很远的地方有一个身影,我指给他们看,是一个穿着红衣的女子,衣裳翩翩,在风中摇曳。那个红色的身影刻在了我的脑海中。大家看到了,惊喜激动不已。可惜,那一次我们没有再突破下去。

扫地僧已经扫不动了,我们时不时的扫扫一样可以保护寺庙。大家聊天的话题已经全是外面的世界与那个红衣女子,大家说着出去后要如何如何玩乐,说要找几个女的,其中一定要有那个红衣女子。我听后暗笑,但心中也对红衣女子向往不已。

终于有一天,我们大家一起决定离开这个地方,这个我们活了十几年的寺庙,我们一起告别了扫地僧,走之前,看着扫地僧的表情,有那么一丝凄凉与悲哀。

杀野兽对我们来说已经是家常便饭,很快我们就杀到了森林的边缘,又见到了那个红衣女子。我们激动不已。

再走几步,是悬崖,看不清底的悬崖,下面云雾缭绕朦朦胧胧。我们瞬间就明白了,我们想离开就一定要飞过去,原来扫地僧让我们练轻功是这个原因!

我们犹豫了一会儿,对岸的红衣女子仍旧立在那里,那么美。突然对面传来一声声呼唤,声音不大,却很清晰。

快过来啊,快过来啊。

我目测了一下,这宽度少说有二十丈,没有信心能飞过去,尽管我是五个人中轻功最好的。大家互相看了看,点了点头,既然走到这里来了,就不要回头了,只为了十几年的梦想。

我第一个飞了出去。第一次飞,飞的那么远,那么高。我从来没有看到过那么美的景色。我感觉到身体越来越重,很快就要掉下去了,后面已经传来了一声惨叫,我心痛不已。我拼尽全力,在脱力的最后一刻,我一冲,掉到了对岸。

一回头,一个人也没有了。我说,给我一个解释。她淡淡的说,这次只有你一个人么。

我突然有一种强烈的感觉,这一个巨大的阴谋。但一切都来不及了。我抬头一望。是那个红衣女子,女子很漂亮,皮肤吹弹可破,秀发随风而动,而一身红衣更是绝美。

她说,我叫红衣,先跟我来吧。

我恢复了体力后,跟了上去,外面的世界其实没有什么不同,树都没那么高那么大了。走了一阵,我看到山脚下有着无数的房屋,无数的人头,我惊呆了。

红衣带我走下山去。大家都看着我,用一种我害怕的眼神看着我,红方一声大喊,新的英雄出来了!!

人群先是沉寂,然后发出了震天的吹呼声。红衣说,你知道么,这里有十万人,他们世世代代都住在这里,曾经一度没有了活下去的信心,在他们知道了可以离开后,他们有了活下去的勇气。他们都想离开这里,但他们没有能力,这里被古森林层层包围了。而这一切都要靠你。

我努力接受着这一切,看着他们的激动,泪水,欢乐,我知道我的使命便是带领他们离开这里。

这里的人们都很好,红衣带我把城里城外都转了一圈,让我对这里一定的了解。听到最多的话便是,英雄请带我们离开吧。听多以后,我突然害怕会像我们从寺庙出来那样。

也许不会吧。

三天后我提着一把刀,在无数双企盼的眼睛的注视下走进了森林,回头一看,红衣冷冷的看着我。这是个阴谋,我也不得不走下去。

森林没有我想象中的那么艰辛,只知道一路杀,一路逃,一路休息。

十五天后,我没有了粮食。

二十天后,我看到了前面有亮光。

二十三天后,我杀了出来,此时我己遍体鳞伤。

慢慢走了出去。睁大眼睛一看,又是悬崖。我苦笑,居然又是这种东西。对岸是不是有红衣呢?我定睛一看,对岸,有无数个红衣。

我拄着刀,问她,红衣,你早知道这里不可能离开对不对?

红衣轻轻一笑,我早知道这里不可能离开,每一次选出来的人总能到这里来,总能发现这个秘密。

我说,那你为什么要让我来?

红衣,咦?我还以为你明白了,你没看到那些人的眼神么?他们活下去的勇气全来于自可以离开的希望,所以他们不能知道这里是不能离开的。

我心中一阵悲凉,原来,这些人世世代代活在了虚无之中了。

要我怎么做?

红衣说,你休息休息,再回去吧,说杀到一半,又退回来了,无能为力。

我躺在地上,不再听红衣的话。心力交瘁。

休息了两天,红衣帮我打点好后,交待好我回去的要做的事情。

我答应了她,提着刀,住回走。刚走两步,又回头,问她。

你是谁?

我是红衣。

回到城后,一切如红衣安排那般,我得到了很好的对待。其后的事情,我还是没有可选择的余地。

十万人中选出了二十个小孩,天资聪颖,让我带入寺庙中去,培养下一代英雄。

红衣告诉我说,城外其实有另外一条路可以去寺庙,让我蒙好小孩的眼睛,前去。

一切我都在被动接受,只为了这个谎言。

回到寺庙。扫地僧不见了,寺庙已经有了一层落叶,我拿起扫帚,扫了起来。

孩子们还在顽皮地玩着。我突然忆起扫地僧脸上的凄凉与悲哀,不禁摇头苦叹。

回头往悬崖看,红衣还立在那儿,随风蹁跹。

todolist

C++复习
1,基本数据类型。
2,字符串,数组,容器等。

数据结构复习
1,树

GL学习

C#学习

毕设

挖坑之MC

话说好久没写代码了。
准备挖个大坑,让自己认真做完。
只能说自己太懒散。还是找个项目写写先。
感觉自己这个一定要写完才行啊。
12-22 项目立项。
查资料去了。
至少打开vs建完项目了。

C++之基本数据类型

C++分为三个基础类型:整型,浮点数,void型。
void型描述了值的空集,void类型的变量无法指定。
任何类型都能显示的强制转化为void类型。
其中整形变量包括:
charbool,short,int,long,long long,wchar_t
浮点数:float,double,long double

32位系统上:
int 2byte
bool 1byte
char 1byte
float 4
double 8
long double 8
long long 8
void * 4

64位系统
int 4
bool 1
char 1
float 4
double 8
short 2
void* 8
long long 8

实际上根据wiki-64-bit的说法,windows用的llp64模型,long是32位的,而linux这种用的lp64模型,long是64位的
参考http://stackoverflow.com/questions/2331751/does-the-size-of-an-int-depend-on-the-compiler-and-or-processor

一个char的大小和一个机器字节一样。而char16_t char32_t 为Unicode 字符集服务。
在C++规定中int至少和short一样大,long至少和int一样大,一个long long至少和一个long一样大。
float以一个字来表示 double为两个字, float和double分别有7和16个有效位。

类型转换

1,非bool型给bool型,值为0为false,不为0就true;反过来也是这样。
2,浮点数给整数会出现截取。
3,整数给浮点数,小数部分为0。
4,当我们给无符号类型一个超出它表示范围的值时,结果是初始值 对无符号类型表示数值取模后的余数。比如unsigned char为255,-1赋值给unsigned char 为255。
5,超出带符号大小的赋值是undefined。

字面值常量

普通字面值

可以用0开头的整数代表八进制数,以0x开头的代表十六进制数。默认十进制字面值是带符号的。
'\0' 显示为0。

转义序列

\x后接1个或者多个16进制数字 或者8进制数字。如\0(空字符)。
如果\后多于3个数字 刚只有前三个有效。

变量

初始化和赋值是两回事。
内置类型的默认初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0,在函数体内的内置类型将不被初始化。这个函数也包括main函数。

变量定义与声明的关系

因为Cpp支持分离式编译,所以要把声明和定义区分开来。
声明:declaration,使得名字为程序所知,一个文件如果想使用别处定义的名字则要包含对那个名字的声明。
定义:definition , 创建与名字关联的实体。
变量声明规定了变量的类型和名字,而定义还申请了存储空间,也可能会变量赋一个初始值。
如果想声明一个变量而不定义它,就在变量名前加一个extern。

extern int i;\\声明i而非定义i
int j;\\声明并定义j

在函数体内,如果试图初始化一个extern变量,将引发错误。

复合类型

引用

引用是给对象起了另外一个名字。当定义引用时,程序把引用和它的初始值 绑定在一起。而不将初始值copy给引用。引用不能重新绑定到另一个对象上,因此引用必须初始化。

因为引用不是一个对象,所以不能定义引用的引用。

引用与对象间类型必须严格匹配。

指针

指针也是实现了对其它对象的间接访问。不同点在于,指挥本身就是一个对象,允许对指针赋值和copy,而且在指针的生命周期内它可以先后指向几个不同的对象。其二,指针无须在定义时赋值。在块作用域内被定义也将有个不确定的值。
没有指向引用的指针。因为引用不是对象。

指针的值应该是下列四种状态
1,指向一个对象。
2,指向对象所占空间的下一个位置。
3,空指针。
4,无效指针。

可以用解引用符*来访问对象。
空指针有int p=0 int p=NULL。
C++11中有nullptr,可以被转换成任意的指针类型。
NULL值是预处理变量,为0。
把int变量直接赋给指针是错误的。哪怕int的值为0.
void
是一种特殊的指针类型,可以存放任意对象的地址。
void
能做的事情比较有限:作为函数的输入或者输出。或者赋值另一个void *指针,不能直接操作void指针所指的对象。概括来说是,内存空间就是内存空间就是内存空间,并不知道里面是什么类型。

const

const对象与非const对象主要差别在于,const对象不能改变其值。
const对象必须初始化。
const变量只在文件内有效。如果要在文件内共享则要加上extern。

const的引用

可以把引用绑定到const对象上,就像绑定到其它对象上一样。我们称为对常量的引用。

int i=42;
int &r1=i;
const int &r2=i;//可以,但是不能通过r2改变i的值 。

const的指针

指向常量的指针不能用于改变其所指对象的值。

const double pi=3.14;
double *ptr=π//错误,ptr是一个普通指针
const double *cptr=π//可以
*cptr=32;//不能改变值


const double * const pip =&pi ;//从右往左读。无论是指针的地址还是指针指向的值都不能变。  

顶层const

顶层const表示 指针本身是个常量,而底层const表示 指针所指的对象是一个常量。

int i=0;
int *const p1=&i;//p1是一个顶层const ,不能改变p1的值 
const int ci=32;
const int *p2=&ci;//底层const.

const int &r=ci;//用于声明引用的const都是底层const 

在copy的时候要注意一下,顶层const不会对复制有影响。
但是底层const对复制有影响,不能把非const变量赋值给const变量。

constexpr

constexpr是指值不会改变并且在编译过程中就能得到结果的表达式。
字面值是constexpr,用于常量表达式初始化的const对象也是常量表达式。

一个对象,表达式是不是constexpr由他的数据类型初始值共同决定。

C++11中 可以将变量声明为constexpr类型以便编译器来验证变量是否是一个常量表达式。

字面值类型包括算术类型,引用,指针。自定义的类型,string,IO库都不是字面值。
constexpr指针的初始值必须是nullptr或者0。
constexptr指针仅对指针生效,不对指向的对象生效。

处理类型

typedef作为传统的定义类型别名的方法。
新标准规定了一种新的方法:using

using SI=Sales_item;

作为是把等号左侧的名字规定成等号右侧类型的别名。

typedef char *pstring;
const pstring cstr=0;
const pstring *ps;

遇到typedef不能简单的替换,const是对类型的修饰,pstring是一个指向char的指针,所以const pstring就是一个指向char的常量指针。而不是一个指向常量的指针。

auto

C++11中可以让编译器来推断expr的类型。
一般auto会忽略到顶层const 保留底层const 。
如果希望推断出的auto类型是一个顶层const ,要明确指出:const auto f=ci;

decltype

decltype可以分析表达式的类型,而不实际计算它的值。
decltype的结果可以是引用类型。
decltype在表达式如果是加上了括号的变量,结果将是引用。
因为变量是一种可以作为赋值语句左值的特殊表达式。

decltype((i)) d;  //d是int & 

新博客的一些备份

今天重新搞了一下VPS,把博客换回了Typecho。
有点心塞。博客系统换了好多个了。数据库保存下来了。但是还没有研究怎么导入到Typecho里。有时间还是要研究一下。毕竟以前还有这么多文章在。不导入我觉得好心疼啊。

阅读剩余部分 -