make some notes 7.30

mapfile

va

getopt

linux 的shell 通常会预先替你处理 参数中的通配符。
而windows的dos shell 期望用户的程序自己处理通配符

unicode是恶魔!

接下来自己的计划

速度写完第四章,然后正式转入ubuntu

win的judge就当是业余项目,鼓捣下就算了。

主攻还是apue,写些小project练手。

当然出题什么的,就当休闲了。

论文吧,也比较重要,但首要还是找到好idea。

最近做的无聊题目

好无聊,于是就做下题目了

http://poj.org/problem?id=3167

一道KMP好题

http://poj.org/problem?id=3716

一道概率题,复习了好多东西

http://poj.org/problem?id=2797

一道题意题。搞到最后是个线性规划,但是可以水过。

http://poj.org/problem?id=3553

看似个拓扑,其实是个Dijkstra。

http://www.soj.me/1349

需要比较深刻的理解kmp的过程和性质

http://www.soj.me/2016

把数据改回来了。这道题我用了很多很无聊的方法, 为的就是不用解方程。。。

计算结构体成员的偏移量的宏

有这么一个宏

#define MY_DEFINE(structure, member) ((int) & ((structure *) 0 -> member))

因为是某笔试的选择题,我又不知道选项,所以纠结了很久。

后来知道了“偏移量”的概念,从而也明白了这是一个计算结构体成员的偏移量的宏。

 

首先

(structure *) 0 

是一个structrure类型的指针,但不指向任何对象;对其成员的赋值和访问都是非法的。

但是,我们却可以对这个指针进行取地址操作,对其成员也是一样的。

因此,

((int) & ((structure *) 0 -> member))

返回的就是空指针的成员的地址。

而由偏移量的定义我们知道p.member的偏移量可以用 &p.member - &p来计算,而

& ((structure *) 0 

的值自然是0.

所以这个宏自然就是用来计算结构体成员的偏移量的:)

const引用

P51说了const引用。

先上注解:“const引用”的意思是“指向const对象的应用”。类似地“非const引用“表示指向非const类型的引用。

int i = 42;
int &r = i;

这个当然是ok的。

const int i = 42;
const int &r = i;

当然也是ok的。

至于

const int i = 42;
int &r = i;

是不行的,编译错误。因为如果可以的话,修改r会变成修改i,而i是不可修改的。

最后

int i = 42;
const int &r = i;
i = 52; //OK
r = 52; //Error, r is read only.

这个primer没有提到,经我那破旧的g++(win下)测试,实际效果应该是i可以被修改,这时候r的值也会被修改。但尝试给别名r赋值则不行。

嗯我就写书上没有的结果好了。

再测试页面补丁

快显示出来吧?

??

我在看C++Primer

有空就写点笔记。

 

以下是test代码:

#include <iostream>

int main()
{

     std::cout<<"I'm ivankevin!"<<std::endl;
     return 0;
}

以下是test Tex公式:

E = MC^2

今天就到此为止啦,哈哈