您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 指针 >

指针地址+1

发布时间:2019-07-05 06:39 来源:未知 编辑:admin

  由于定义的是int型,在32位机中,int占4个字节,即一个单位=4字节

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  而 (int))(age+1)-(int)(age) 就是先将 指针指向的地址值转换成整数,求两个整数的差值,假设

  age += 1 也是将 age 指向的地址后移4个字节,表面上 age++ 有些相似,其实更类似于 ++age,先增加 age 指向的地址值,再返回 增加后的地址, 表达式的值是移动后的地址值。

  指针的相减要求更加严格, 不止要求两个指针都有效,而且还要两个指针均指向起始地址相同的内存空间。追问大侠说的很清楚啊 那请问 32位机与64位机 也是无区别的对吗 字节大小只和编译器有关 还是我的理解是错的 要是相同的 我就 没有问题了追答字节大小在 32 位 和 64 位机都一样的,都是8位 (以前听别人说,有些专用的计算机,1个字节占的位数不一样,比如一个字节是 7位之类的,不过从来没有碰到过这样的机器),与编译器和系统没有什么关系。

  整数和指针的大小与编译器是有关系的, 在32位机,整数和指针的大小往往是4个字节。64位机,可能是4个字节或8个字节,但不会超过8个字节, 具体多少是由编译器定义的。

  假设64位机,指针和整数的大小是8位的话, age 指向的地址是 0xFF00, 则 age + 1 的地址是:

  (age + 1 - age)* sizeof(int) == (int))(age+1)-(int)(age) ;

  说白了,指针定义的是什么类型的,它每次移动时,都要移动一个相应类型的块大小(或倍数块)。+1就是指向下“一个”的意思。“一个”有多大?那就看它是什么类型了。

  (int)(age+1) 只不过是进行一次强制转换说明。 告诉编译(或运行)系统,这个结果按整型处理。

http://lemadras.com/zhizhen/214.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有