鱼C论坛

 找回密码
 立即注册
查看: 2256|回复: 4

C 49th讲,指针相减,出错了

[复制链接]
发表于 2014-5-9 22:46:57 | 显示全部楼层 |阅读模式
10鱼币
#include"stdio.h"
void main()
{
    int a[5]={1,2,3,4,5};
    int *p1, *p2, *p;
    *p1=&a[0];
    *p2=&a[3];
    *p=p2-p1;
    printf("%d", p);
}

以上程式错了吗?编译没问题,但运行不了,求各位大神指点指点{:7_154:}

最佳答案

查看完整内容

#include void main() { int a[5]={1,2,3,4,5}; int *p1, *p2, p; //p1,p2为指针变量 p1=&a[0]; p2=&a[3]; p=*p2-*p1; printf("%d", p); }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-9 22:46:58 | 显示全部楼层
本帖最后由 大黑鱼 于 2014-5-9 22:57 编辑

#include<stdio.h>
void main()
{
    int a[5]={1,2,3,4,5};
    int *p1, *p2, p; //p1,p2为指针变量
    p1=&a[0];
    p2=&a[3];
    p=*p2-*p1;
    printf("%d", p);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-9 23:12:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-9 23:58:49 | 显示全部楼层
欣欣celin 发表于 2014-5-9 23:12
谢谢大神,但为什么运行结果是3,也就是P1和P2之间相隔的元素的个数,而不是元素间的地址差呢???

我没看49th
不过结果是3不是相隔元素的个数
p1 = &a[0];表示指针变量p1指向a[0];也就是  *p1就等价于 a[0];
所以他们相减的结果是 a[3] - a[0] => 4 - 1 = 3;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-10 22:04:42 | 显示全部楼层
大黑鱼 发表于 2014-5-9 23:58
我没看49th
不过结果是3不是相隔元素的个数
p1 = &a[0];表示指针变量p1指向a[0];也就是  *p1就等价于 a ...

原来如此,懂了,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 07:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表