首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针加法演算.

2012-11-05 
指针加法运算..//pnt_add.c--指针加法#includestdio.h#defineSIZE4intmain(void){shortdates[SIZE]shor

指针加法运算..
//pnt_add.c   --指针加法
#include   <stdio.h>
#define   SIZE   4
int   main(void)
{
          short   dates   [SIZE];
          short   *   pti;
          short   index;
          double   bills[SIZE];
          double   * ptf;
          pti   =dates;//把数组地址赋给指针

        printf( "%23s   %10s\n   ", "short ", "double ");

        for(index   =0;index   <SIZE;index   ++)
                  printf( "pointers   +   %d:   %10p\n ",
                                index,pti   +   index,ptf   +   index);

            return   0;

}


输出结果如下:
                              short                 double
  pointers   +   0:   0x0064fd20     Oxoo64fd28
  pointers   +   1:   0x0064fd22     Oxoo64fd30
  pointers   +   2:   0x0064fd24     Oxoo64fd38
  pointers   +   3:   0x0064fd26     Oxoo64fd40

求输出解释   。为什么   double   类型指针+1后会增加2个位或8个位.....初学者   多谢   !...

[解决办法]
int *p;
p++;//p会增加sizeof(int), 这么加的原因是为了指向p的下一个int
[解决办法]
这样跟你说吧,指针有类型吧,指针的运算加的不是数值而是类型的宽度。
如:
int *a, *b;
b = a +1; 实际上是 a + (1 * sizeof(int));

char *x, *y;
y = x + 4; 实际上就是 y + (4 * sizeof(char))

至于int的宽度,这和cpu字长,编译器等有关。不同的地方有些出入
[解决办法]
lz,那不是加2个位,十六进制加法,,,0x10-0x8 = 8
[解决办法]
十六进制 
8+8=10
[解决办法]
给个参考:
公元纪年,以1年为一个单位,现在是2012年,明年是2013年,。。。。
设2000年时开办一个全国性的竞赛,每4年一届,。。。。
首届(与人们的习惯不同,我们称为第0届)之后,下一届是第几届?是哪一年?
是2000+1?
还是2000+1*(4)?
这里就是1是一年还是一届的长度的差别!

[解决办法]
"差2"是因为 10-8
这里是十六进制 不是 10 而是 16-8 差8 ,清楚了吧

热点排行