标题:指针作减法运算问题
取消只看楼主
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
结帖率:100%
已结贴  问题点数:10 回复次数:1 
指针作减法运算问题
#include <stdio.h>
int main()
{
    int a[3]={1,2,3};
    int *p,*q,t;
    p=&a[110];//显然超出了数组范围
    q=&a[-9];//在数组中下标是不能为负的
    t=p-q;
    printf("%d",t);
return 0;
}
//这个程序的运行结果是119
//我的问题是问什么数组下标超出了数组范围甚至为负数这个程序还是可以运行的,我想听听大家是怎么理解的,和我的是不是相同,我用的编译软件是DEVC


[此贴子已经被作者于2018-11-14 20:13编辑过]

搜索更多相关主题的帖子: 指针 减法 运算 int 数组 
2018-11-14 20:04
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
得分:0 
谢谢以上给我回复的各位,谢谢哈,我的理解是虽然p,q指向的变量是不可预料的,但是地址是真实存在的,所以虽然不可以引用,但是只进行地址运算是可以的,不知道这样理解可不可以?
2018-11-14 21:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491272-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.748711 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved