| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 977 人关注过本帖
标题:不能对只想数组后的第一个地址的指针进行取值运算?
只看楼主 加入收藏
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
结帖率:97.44%
收藏
已结贴  问题点数:20 回复次数:6 
不能对只想数组后的第一个地址的指针进行取值运算?
C primer plus  中的一段话:可以对指向一个数组元素的指针进行取值运算。但不能对指向数组后的第一个地址的指针进行取值运算,尽管这样的指针是合法的!
程序代码:
#include"stdio.h"
int main(void)
{
    int a[2]={100,200};
    int *ptr;
    ptr=a;
    printf("%d",*ptr);
    return 0;
}


我想问,这句话所描述的代码是我写出来的这段吗?如果是,那为什么呢?如果不是,那他所描述的代码是什么?还有就是为什么!谢谢!
2011-03-17 15:31
zhongyong123
Rank: 2
等 级:论坛游民
帖 子:45
专家分:15
注 册:2008-12-16
收藏
得分:7 
不是这个意思的。“但不能对指向数组后的第一个地址的指针进行取值运算,尽管这样的指针是合法的”指的是ptr指针后移两位以后的情况,其实已经不在数组定义的范围了,就是a[2]及以后。明白吗?
2011-03-17 15:57
zhongyong123
Rank: 2
等 级:论坛游民
帖 子:45
专家分:15
注 册:2008-12-16
收藏
得分:0 
#include"stdio.h"
int main(void)
{
    int a[2]={100,200};
    int *ptr;
    ptr=a;
    ptr+=2;
    printf("%d",*ptr);
    return 0;
}
指的是这种情况

2011-03-17 15:58
zhongyong123
Rank: 2
等 级:论坛游民
帖 子:45
专家分:15
注 册:2008-12-16
收藏
得分:0 
到底对不对啊?
2011-03-17 16:41
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 4楼 zhongyong123
你问我还是问你自己?

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-03-17 17:23
新手写程序
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:120
注 册:2011-3-5
收藏
得分:7 
2楼对 可以超过范围,但是不能对其解引
2011-03-17 17:36
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:7 
其实就是告诉你不要越界访问数据
2011-03-17 18:06
快速回复:不能对只想数组后的第一个地址的指针进行取值运算?
数据加载中...
 
   



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

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