数组和指针之间存在如下等价关系:

  • 一维数组等价于元素的指针:int a[20] <==> int *const a;
  • 二维数组等价于指向一维数组的指针,int b[3][4] <==> int(*const b) [4];
  • 三维数组等价于指向二维数组的指针,int c[2][3][4] <==> int (*const c) [3][4];

其他多维数组与二、三维相似,不再赘述。

Tags: .

有如下规则:

非静态数据成员被放在每一个对象体内作为对象专有的数据成员

静态数据成员被提取出来放在程序的静态数据区内,为该类所有对象共享,因此只存在一份。

静态和非静态成员函数最终都被提取出来放在程序的代码段中并为该类所有对象共享,因此每一个成员函数也只能存在一份代码实体。

因此,构成对象本身的只有数据,任何成员函数都不隶属于任何一个对象,非静态成员函数与对象的关系就是绑定,绑定的中介就是this指针。

成员函数为该类所有对象共享,不仅是处于简化语言实现、节省存储的目的,而且是为了使同类对象有一致的行为。同类对象的行为虽然一致,但是操作不同的数据成员。

Tags: .

全局对象

在程序进入main()之前自动调用它们的相应构造函数来初始化,但是各个对象初始化的顺序不确定。直到main()函数结束后才会调用析构函数。

类的静态数据成员对象

等同于全局对象。

对象引用

其初始化和销毁均不会调用构造函数和析构函数,这使得引用传递比值传递更加地高效。

动态创建对象

调用new运算符时调用对象的构造函数。调用delete运算符时调用相应析构函数。

Tags: .

描述:

本程序可以将一个3000位的二进制串转化成十进制串

Tags: .

我的理解:

在main函数中由于定义了一个局部变量a,因此全局变量a被隐藏。int a = a;定义a(为a分配内存),然后用a(右侧的a)给a(左侧的a)赋值。所以这段代码是可以通过编译的,但是链接时候就会出错。因为,使用了一个未初始化的变量来给一个变量赋值。有可能在某些编译器上面是可以链接并运行的,说明它对变量的初始化不太严格。

Tags: ,.

题目:

妈妈有2000元,要分给她的2个孩子。由哥哥先提出分钱的方式,如果弟弟同意,那么就这么分。但如果弟弟不同意,妈妈会没收1000元,由弟弟提出剩下 1000元的分钱方式,这时如果哥哥同意了,就分掉这剩下的1000元。但如果哥哥也不同意,妈妈会把剩下的1000元也拿走,然后分别只给他们每人 100元。
问:如果你是哥哥,你会提出什么样的分钱方式,使你有可能得到最多的钱?(最小单位1元)

分析:

网上流传着两个答案,其区别仅仅在于“是否在自己得到更多钱的情况下让对方得到更少的钱”,我的观点是:这毕竟是两兄弟,小孩儿的伎俩肯定会让妈妈得到更少的钱;况且,这不是“海盗分金币”。
关心的不必是细节,而是解决问题的逻辑思维。

Tags: .

lshw

lshw可以把硬件的详细信息导出。lshw除了可以以纯文本的格式输出硬件报告,可以生成html、xml等格式的报告。如果安装了lshw-gtk,还可以在图形界面下查看硬件信息。lshw存在于多数发行版的软件仓库中,可以直接安装,有的发行版还提供了lshw-gtk,推荐安装。使用方法:

Tags: .

Const in Header

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//file header.h
static int global_count;
const int global_const_count = 7;
 
//file source1.cpp
#include "header.h"
 
int main()
{
    return 0;
}
 
//file source2.cpp
#include "header.h"

As we can see, both source1.cpp and source2.cpp include the definition of global_const_count, a const in C++ must default to internal linkage. That is, it is visible only within the file where it is defined and cannot be seen at link time by other translation units. But there won’t be two instances of the const. Normally, the C++ compiler avoids creating storage for a const, but instead holds the definition in its symbol table.

Tags: ,.

题目描述:

算出n!的完整结果,其中n!=1*2*3*…*n

输入:

多组测试数据,一行一组,每行仅一个数n
其中0<=n<=10000

输出:

输出相应的n!的结果,必须精确到个位

样例输入:

10
20
100

样例输出:

3628800
2432902008176640000
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

Tags: .

问题描述:

所谓子序列,就是在原序列里删掉若干个元素后剩下的序列,以字符串”abcdefg”为例子,去掉bde得到子序列”acfg”
现在的问题是,给你一个数字序列,你要求出它最长的单调递增子序列。

输入:

多组测试数据,每组测试数据第一行是n(1<=n<=10000),下一行是n个比1e9小的非负整数

输出:

对于每组测试数据输出一行,每行内容是最长的单调递增子序列的长度

样例输入:

5
1 2 4 8 16
5
1 10 4 9 7
9
0 0 0 1 1 1 5 5 5

样例输出:

5
3
3

Tags: .