| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 401 人关注过本帖
标题:弱弱请教一个小问题
只看楼主 加入收藏
max668
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2010-7-25
结帖率:100%
收藏
 问题点数:0 回复次数:2 
弱弱请教一个小问题
#include "stdafx.h"
#include<stdio.h>

int main(int argc, char* argv[])
{
    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++)
    {
        if((p-a[0])%4==0)//为什么这里是输出4个数据换行???????????
        {
            printf("\n");

        }
        printf("%4d",*p);
    }
    printf("\n")
    return 0;
}
搜索更多相关主题的帖子: include return 
2010-08-20 16:23
max668
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2010-7-25
收藏
得分:0 
有人看,没人理
2010-08-20 16:28
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
很明显 数组是一段连续的地址
指针操作 那么指针根据其类型选择定义的字节数++
比如 int *p ;   p+1等于加了 4个字节 也就是一个int位
char *p; p+1等于加了一个字节;
 for(p=a[0];p<a[0]+12;p++)这个的p++ 每次循环 p移动一个int位 4字节
而a数组分配的是12个连续的int位内存空间
p的开始指向是a[0] 那么p距离到a[12]有12个int位
 也就是说 a[12]所在的地址减去 a[0] 等于 12*sizeof(int)
p++ 一次  p就由a[0]移动到a[1] 距离a[12]的地址等于 11*sizeof(int)  p-a[0] == a[1]-a[0] = 1*sizeof(int)
P++ 再一次 p移动到a[2]了   p-a[0] == a[2]-a[0] = 2*sizeof(int) 单位字节byte

所以你可以理解了
2010-08-20 17:14
快速回复:弱弱请教一个小问题
数据加载中...
 
   



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

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