标题:关于指针+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
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
1个16进制表示2个字节
听不懂你在说什么

在你的编译器中 sizeof(int) 等于 4,所以
001FF97C + 4 == 001FF980 很正确
2019-09-09 13:56
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:3 
哪也没错,内存地址是以字节为单位的。
2019-09-09 14:02
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册: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: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:3 
数据类型与进制是两个完全不同的概念,不要混为一谈。
2019-09-12 00:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496751-1-1.html




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

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