给变量安排空间,可以说是随机的,这个随机是指声明变量的顺序、依次每个变量的尺寸、运行时栈因进退或递归函数导致每次分配不同等而不同,所以对两个没有逻辑关联的变量地址求差是没有任何意义的。比如你这个测试示例,地址距离是36个字节,但这36个字节之间并非都是以4字节为单元(指针声明的单元尺寸是int型即4字节)的数据,对i、j这样两个没有丝毫逻辑关系的变量,这36个字节之间的距离毫无意义,计算机也不依靠这个偏移量来寻址,决不会从i移动36个字节来找到j(它是从栈的边界开始用分配时的偏移量来寻址)。
当两个地址有逻辑关联时,计算偏移量才有意义。比如对一块连续内存,对头尾两个边界地址求差,就可以得到这块内存的尺寸,又假如这块内存所储存的都是相同类型的数据,即每个元素的尺寸都一样,那么这个差值也能表示元素的个数。若这里的i和j分别是这样的两个变量数据,这种计算就有意义了。
[
本帖最后由 TonyDeng 于 2014-7-2 10:42 编辑 ]