新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → 荤菜求助:指向二维数组的指针的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6394 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 荤菜求助:指向二维数组的指针的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     荤菜 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:66
      积分:295
      门派:XML.ORG.CN
      注册:2007/2/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给荤菜发送一个短消息 把荤菜加入好友 查看荤菜的个人资料 搜索荤菜在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看荤菜的博客楼主
    发贴心情 荤菜求助:指向二维数组的指针的问题

    用指针变量输出数组元素的值
    main()
    {static int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
    int *p;
    for(p=a[0];p<=*(a+2)+3;p++)
    {if((p-a[0])%4==0)         /*为什么不能写成if((p-a[0])%8==0)*/
      printf("\n");
      printf("%4d",*p);         /*把*p换成p试试看,再换成a[0]试试看, 然后直接在草稿上(不用换)p-a[0]看看,这就是我为什么写成if((p-a[0])%8==0)的原因*/
      }
    getch();
    }

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/16 23:57:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    你完全可以写成if((p-a[0])%8==0)啊,只不过一行打印8个数据罢了。
    *p换成p打印出来的是指针p的地址,a[0]指的是p的首地址,有什么问题吗?

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/17 14:56:00
     
     一分之千 帅哥哟,离线,有人找我吗?射手座1984-11-30
      
      
      威望:1
      等级:研一(随老板参加了WWW大会还和Tim Berners-Lee合了影^_^)
      文章:632
      积分:4379
      门派:XML.ORG.CN
      注册:2006/12/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给一分之千发送一个短消息 把一分之千加入好友 查看一分之千的个人资料 搜索一分之千在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看一分之千的博客3
    发贴心情 
    这个问题应该很明显吧,p是一个地址值,不要把地址值与变量值混了就好了

    ----------------------------------------------
    越学越无知

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/18 9:25:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客4
    发贴心情 
    荤菜好像一直搞不懂指針似的,不然就不问了。

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/18 11:04:00
     
     荤菜 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:66
      积分:295
      门派:XML.ORG.CN
      注册:2007/2/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给荤菜发送一个短消息 把荤菜加入好友 查看荤菜的个人资料 搜索荤菜在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看荤菜的博客5
    发贴心情 
    不好意思,忘说了,我要的是输出3行4列
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/18 18:01:00
     
     荤菜 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:66
      积分:295
      门派:XML.ORG.CN
      注册:2007/2/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给荤菜发送一个短消息 把荤菜加入好友 查看荤菜的个人资料 搜索荤菜在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看荤菜的博客6
    发贴心情 
    把printf中的*p换成p,结果是:
    404 406 408 410 412 414 416 418 420 422 424 426
    把printf中的*p换成a[0],结果是:
    404 404 404 404 404 404 404 404 404 404 404 404
    因为408-404=4,4%4=0,所以我认为应该在408这个数的位置就应该转向下一行
    我认为如果写成if((p-a[0])%4==0),再把*p换成p结果是:
    404 406
    408 410
    412 414
    416 418
    420 422
    424 426
    可实际正确的结果是:
    404 406 408 410
    412 414 416 418
    420 422 424 426
    我就是不明白正确的结果
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/18 19:57:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客7
    发贴心情 
    老大, printf("\n"); 才是实现换行的代码,跟你上面说的没有关系的。

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/19 16:30:00
     
     荤菜 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:66
      积分:295
      门派:XML.ORG.CN
      注册:2007/2/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给荤菜发送一个短消息 把荤菜加入好友 查看荤菜的个人资料 搜索荤菜在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看荤菜的博客8
    发贴心情 
    不好意思,光想着解决问题没表达清楚意思
    我觉得关于换行这一方面这个程序可以写成:
    main()
    {int p;
    for(p=404;p<=426;p=p+2)
    {if((p-404)%8==0)           /*这儿写成"%8"就实现了3行4列,我认为p中的内容是一个地址值,所以应该%8*/
      printf("\n");
      printf("%d ",p);
      }
    getch();
    }
      if((p-a[0])%4==0)我觉得是p的地址跟a[0]的地址相减,我现在要的输出结果是3行4列,当p的地址为412时(412正是要转到下一行的数),由于a[0]的地址为404,412-404=8,所以我认为应该写成if((p-a[0])%8==0),才能实现3行4列(也就是if((412-404)%8==0)这个意思).
    同时我认为for(p=a[0];p<=*(a+2)+3;p++)是for(p=404;p<=426;p=p+2)这个意思.
    其实我的问题就在于遇到第四个数换行的if语句怎么没写成"%8".
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/19 18:34:00
     
     一分之千 帅哥哟,离线,有人找我吗?射手座1984-11-30
      
      
      威望:1
      等级:研一(随老板参加了WWW大会还和Tim Berners-Lee合了影^_^)
      文章:632
      积分:4379
      门派:XML.ORG.CN
      注册:2006/12/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给一分之千发送一个短消息 把一分之千加入好友 查看一分之千的个人资料 搜索一分之千在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看一分之千的博客9
    发贴心情 
    你的意思我基本明白了,就是说你不明白为什么是%4而不是%8的时候换行吧?
    %4是因为你一行有4个数,你为什么要%8呢?因为4个数有8个字节么?
    不对吧,4个整形数有16个字节,还有你加的空格,也是16个字节。 也就是说是32个字节。


    在执行p-a[0]运算的时候,由于p 和a【0】原先是两个地址值,所以在进行运算的时候默认的就转换为整形数进行运算,地址值差的是4,而作为变量的时候其值仅仅差1.

    ----------------------------------------------
    越学越无知

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/21 10:52:00
     
     GoogleAdSense射手座1984-11-30
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/23 0:16:25

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    98.999ms