水木人生88 发表于 2014-10-2 03:25:34

问个书本上的问题???

#include<stdio.h>
void main()
{
    int a={1,3,5,7,9,11,13,15,17,19,21,23};
    int *p;
    for(p=a;p<a+12;p++)
    {
      if((p-a)%4==0) //P每次都增加四个字节,每次都应该整除,怎么会产生余数呢?
      {
            printf("\n");
      }
      printf("%4d %d",*p,p);
    }
    printf("\n");
   

_DEBUG 发表于 2014-10-2 08:03:32

p每次都增加四个字节是没错,但p-a的结果就不是单纯的减法了,指针相减的结果就是这两个指针之间有多少个指针指向的对象。这里%4就是起到一个每输出4个换行的效果,你可以把它改成5试试。

水木人生88 发表于 2014-10-2 21:11:25

_DEBUG 发表于 2014-10-2 08:03
p每次都增加四个字节是没错,但p-a的结果就不是单纯的减法了,指针相减的结果就是这两个指针之间有多少 ...

可以再说得详细一些吗?谢谢!!!!!!!!!!!

网络学习 发表于 2014-10-3 01:54:17

认真学习领会

_DEBUG 发表于 2014-10-3 08:51:29

谭浩强的书都讲过:
http://bbs.fishc.com/template/dreambred_c_apple/images/common//emp.gif

_DEBUG 发表于 2014-10-3 08:53:56

第8章 有关指针的小结:

水木人生88 发表于 2014-10-7 23:22:37

_DEBUG 发表于 2014-10-3 08:53
第8章 有关指针的小结:

多谢指点!!!!!!!!!

墨白_找 发表于 2014-10-8 10:02:59

地址之差等于地址之间数据的个数呗~

大个的糖果 发表于 2014-11-1 00:23:12

tlwangxd 发表于 2014-11-4 08:56:57

学习
页: [1]
查看完整版本: 问个书本上的问题???