| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
Reworld,下班在家制作游戏,1500万奖金等你拿以码会友 以友辅仁
共有 293 人关注过本帖
标题:关于指针+1与内址地址变化数量问题
只看楼主 加入收藏
niuniuchiniu
Rank: 1
等 级:新手上路
帖 子:20
专家分:9
注 册:2019-8-10
结帖率:33.33%
  已结贴   问题点数:10  回复次数:5   
关于指针+1与内址地址变化数量问题
大佬们,代码如下:
#include
#include
int main()
{
    int vector[] = { 1,13,1231 };
    int *p = vector;
   
    printf("%p\n", p);
    p += 1;

    printf("%p\n", p);

    /*
    001FF97C
    001FF980
   
    */
}
1个16进制表示2个字节,int 型的指针向前加1,即4个字节,也就是2个16进制地址,但答案如上,是4个16进制地址,请问是哪里错了,大谢。
搜索更多相关主题的帖子: 地址 变化 指针 int 数量 
2019-09-09 12:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:322
帖 子:6637
专家分:38390
注 册:2011-1-18
  得分:3 
1个16进制表示2个字节
听不懂你在说什么

在你的编译器中 sizeof(int) 等于 4,所以
001FF97C + 4 == 001FF980 很正确
2019-09-09 13:56
zbjzbj
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:40
帖 子:495
专家分:2469
注 册:2011-4-22
  得分:3 
哪也没错,内存地址是以字节为单位的。
2019-09-09 14:02
bcbbcclbbc
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:59
专家分:119
注 册:2019-8-15
  得分:3 
回复 楼主 niuniuchiniu
1个字节8位(8个二进制数)
int类型4个字节,共32位也就是32个二进制数。
1位表示一个二进制数;
3位表示一个八进制数;
4位表示一个十六进制数;
一个int类型数据为8个十六进制数。
(001ff97c)=二进制数(00000000000111111111100101111010)
(001ff980)=二进制数(00000000000111111111100110000000)
可以参考一下
2019-09-10 10:39
niuniuchiniu
Rank: 1
等 级:新手上路
帖 子:20
专家分:9
注 册:2019-8-10
  得分:0 
回复 4楼 bcbbcclbbc
谢谢谢谢!您的认真解决了我的大问题.
2019-09-11 23:27
jklqwe111
Rank: 8Rank: 8
等 级:贵宾
威 望:24
帖 子:267
专家分:903
注 册:2014-4-13
  得分:3 
数据类型与进制是两个完全不同的概念,不要混为一谈。
2019-09-12 00:15
快速回复:关于指针+1与内址地址变化数量问题
数据加载中...
 
   





关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038642 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved