| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:一个关于指针地址的问题!高手来啊
只看楼主 加入收藏
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
结帖率:86.21%
收藏
 问题点数:0 回复次数:5 
一个关于指针地址的问题!高手来啊
书上说:
程序代码:
#include<stdio.h>
main()
{
    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
    int *p;
    for(p=a[0];p<a[0]+12;p++)
    {
        printf("addr=%o,value=%4d\n",p,*p);
    }
}
这个地址是怎么加上去的?为什么我运行的时候
图片附件: 游客没有浏览图片的权限,请 登录注册

地址第一次加4,第二次+6然后······
不是应该a[0][0]和a[0][1]相差2个字节,不应该加2吗?
高手来详细说下啊!
搜索更多相关主题的帖子: color 
2011-01-23 08:31
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
收藏
得分:0 
高手跑哪去了?这个地址问题没人会吗?难道都学C++?黑盒思想啊?
2011-01-23 08:34
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
收藏
得分:0 
因为%o是8进制输出,要输出8时只能进位,你误解为+6了其实还是+4
要看得清楚点 ,改 printf("addr=  %d   ,value=%4d\n",p,*p);就行了

[ 本帖最后由 zjsxwc 于 2011-1-23 09:30 编辑 ]

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2011-01-23 09:29
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 

#include<stdio.h>
main()
{
    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
    int *p;
    for(p=a[0];p<a[0]+12;p++)
    {
        printf("addr=%p,value=%4d\n",p,*p);
    }
}
int 32位是4个字节

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-23 11:27
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
十进制与八进制输出区别

小代码,大智慧
2011-01-23 12:25
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
收藏
得分:0 
明白了!谢谢大家!
2011-01-23 12:47
快速回复:一个关于指针地址的问题!高手来啊
数据加载中...
 
   



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

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