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

一个简单的关于指针运算和地址运算的有关问题

2012-03-14 
一个简单的关于指针运算和地址运算的问题#include stdio.h#include stdlib.hmain(){char c,*cp1&c,*c

一个简单的关于指针运算和地址运算的问题
#include <stdio.h>
#include <stdlib.h>
main()
{
  char c,*cp1=&c,*cp2;
  int i,*ip1=&i,*ip2;
  double d,*dp1=&d,*dp2;
  cp2=cp1+1;
  ip2=ip1+1;
  dp2=dp1+1;
  printf("%d,%d,%d\n",cp2-cp1,ip2-ip1,dp2-dp1);
  printf("%d,%d,%d\n",(int)cp2-(int)cp1,(int)ip2-(int)ip1,(int)dp2-(int)dp1);
}
我用code::blocks编译器编译的,结果是:
1,1,1
1,4,8
为什么结果不是:
1,1,1,
1,2,8呢?
还有为什么(int)cp2-(int)cp1表示的是地址的运算呢?

期望各位大侠指点小弟一下!小弟新手!

[解决办法]

探讨
#include <stdio.h>
#include <stdlib.h>
main()
{
char c,*cp1=&c,*cp2;
int i,*ip1=&i,*ip2;
double d,*dp1=&d,*dp2;
cp2=cp1+1;
ip2=ip1+1;
dp2=dp1+1;
printf("%d,%d,%d\n",cp2-cp1,ip2-ip1,dp2-dp1);
printf("%d,%d,%d\n",(int)cp2-(int)cp1,(int)ip2-(int)ip1,(int)dp2-(int)dp1);
}
我用code::blocks编译器编译的,结果是:
1,1,1
1,4,8
为什么结果不是:
1,1,1,
1,2,8呢?
还有为什么(int)cp2-(int)cp1表示的是地址的运算呢?

期望各位大侠指点小弟一下!小弟新手!

热点排行