C 49th讲,指针相减,出错了
#include"stdio.h"void main()
{
int a={1,2,3,4,5};
int *p1, *p2, *p;
*p1=&a;
*p2=&a;
*p=p2-p1;
printf("%d", p);
}
以上程式错了吗?编译没问题,但运行不了,求各位大神指点指点{:7_154:}
本帖最后由 大黑鱼 于 2014-5-9 22:57 编辑
#include<stdio.h>
void main()
{
int a={1,2,3,4,5};
int *p1, *p2, p; //p1,p2为指针变量
p1=&a;
p2=&a;
p=*p2-*p1;
printf("%d", p);
} 大黑鱼 发表于 2014-5-9 22:46 static/image/common/back.gif
#include
void main()
{
谢谢大神,但为什么运行结果是3,也就是P1和P2之间相隔的元素的个数,而不是元素间的地址差呢??? 欣欣celin 发表于 2014-5-9 23:12 static/image/common/back.gif
谢谢大神,但为什么运行结果是3,也就是P1和P2之间相隔的元素的个数,而不是元素间的地址差呢???
我没看49th
不过结果是3不是相隔元素的个数
p1 = &a;表示指针变量p1指向a;也就是*p1就等价于 a;
所以他们相减的结果是 a - a => 4 - 1 = 3; 大黑鱼 发表于 2014-5-9 23:58 static/image/common/back.gif
我没看49th
不过结果是3不是相隔元素的个数
p1 = &a;表示指针变量p1指向a;也就是*p1就等价于 a ...
原来如此,懂了,感谢
页:
[1]