地址与内存关系

计算机的内存看作是一排很长很长的房子,每个房子都可以放数据,通过一个房号来标识。
这个比喻颇为有用,也存在局阻性。计算机的内存由数以亿万计的位(bit)组成,每个位可以容纳值0或1.由于一个位所能表示的值的范出太有限,所单独的位用处不大,通常许多位合成一组作为一个单位(比如最小8位,char类型),这样就可以存储范围较大的值。画个图来描述机器中的内存位置。

继续阅读地址与内存关系

用指针求数组中间位置

两个指针一个指向数组的头部,另一个指向数组的尾部。求数组中间位置?

这个用指针的算术运算就可以完成,用尾部指针减去头部指针,再除以2就可以。不过有一点要注意数组要是奇数才有中间位置,例如:1   2  3  4  5  6   7    中间是4。 继续阅读用指针求数组中间位置

避免:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低

使一个成员为private或protected的原因是想限制对它的访问,对吗?劳累的编译器要费九牛二虎之力来确保你设置的访问限制不被破坏,对不对?所以,写个函数来让用户随意地访问受限的成员没多大意义,对不对?如果你确实认为有意义,那么请反复阅读本段,直到你不这样认为为止。 继续阅读避免:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低

指针的指针做输入参数代替二维数组

指针的指针做输入参数代替二维数组?

有时在写程序是会碰到定义函数输入参数要一个二维数组,但并不能确定数组内的元素个数时,这种情况可以用指针的指针做输入参数解决问题。 继续阅读指针的指针做输入参数代替二维数组

数组与指针间的关系

数组在内存中就指一段连续的内存,但C++提供了一种快捷表示,定义数组名可以等价于该数组的首地址。

int  a[5] = {0};  定义整型数组,获取首地址可以有两个写法了,取址符:&a[0],   数组名: a 继续阅读数组与指针间的关系

为何 C++ 里有些东西是未定义的

因为机器的不同以及 C 里面也有很多未定义的东西。ISO C++ 标准里有以下术语的详细定义:“未定义”、“未指明(unspecified)”、“由实现定义”,以及“合乎语法的(well-formed)”。注意,这些术语的含义和 ISO C 标准里的定义不太相同,而且也和它们常见的用法不同。假若没有察觉到不同的人对这些术语的认识会有所偏差,讨论问题的时候常常会极度混乱。 继续阅读为何 C++ 里有些东西是未定义的