| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3481 人关注过本帖
标题:关于数组下标的问题
只看楼主 加入收藏
zkx1920
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-9-29
结帖率:0
收藏
已结贴  问题点数:2 回复次数:10 
关于数组下标的问题
int a[20];
int *p=a-1;
请问这样能实现从1开始的下标访问数组a吗?
搜索更多相关主题的帖子: 问题 
2011-09-29 10:23
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
下标从0开始就是~~规定\规定.....
注意:这是规定。。。
在范围外了就是越界。。
不过你可以这样,a[1] = b[0];
            a[2] = b[1];
            a[3] = b[2];
            `
            `
你就可以用a[]去代替b[]来达成这一效果。当然a[0]你要也搞一下。。。。
2011-09-29 10:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
学C的精力花费在这些地方,最终连一个很简单的小程序也写不好,无非是侵占了程序逻辑的学习时间,注意力摆错了方向。

授人以渔,不授人以鱼。
2011-09-29 10:51
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:0 
从1开始不是应该是
int a[20];
int *p=a+1;
2011-09-29 10:54
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 zkx1920
数组名不是指针

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 10:59
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
无论什么数组,他都是有以"0"为下标的元素....
因这这是系统默认分配的,不用就是浪费,你可以完全忽略下标为“0”的元素。。。。以达成你想要从1开始,但你就是不能用a[20];
因为你定义int a[20];的时候,系统就会给你下标为0~19的元素分配了内存,第"20"个元素的内存可能是你系统里某个程序正在使用的。。。。
你硬要使用这个内存,可能会使别的程序出现崩溃,结果不言而喻。。。

例:
知道金山那个游戏修改器,他是检测你内存的变动,然后得出数据由你来操控,使游戏里面的数值变化。。。。。
所以:内存分配好了,就最好不要动了,搞不好,你重启机器吧。。
2011-09-29 11:01
gino86
Rank: 2
等 级:论坛游民
帖 子:66
专家分:77
注 册:2010-9-17
收藏
得分:0 
a == a[0] a+1 == a[0] + 1
p == a
2011-09-29 14:06
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
可以。
p[1]相当于a[0].
我觉得这样的问题问得很好!
很多人学得很死的,他们只记得概念和要求,不懂得联系实际生活中的寻路寻址来思考问题,一味的强调越界的人估计是缺乏扩展性思考的,c语言的精髓在于指针,数组其实就是限定了范围的指针而已。

实际生活中越界很多,可是人类寻路寻址都没出问题,因为人类懂得合理利用自己的大脑。例如:
xx路只有100个门牌号,可是你要找的2个地方一个在xx路首地址的前面2个门牌号,另一个在xx路尾地址再往后的30个门牌的位置,我不信你访问不到这两个地方。别跟我说现实生活中你会越界!

[ 本帖最后由 khaz 于 2011-10-2 16:18 编辑 ]
2011-10-02 16:05
徐仁强
Rank: 2
等 级:禁止访问
帖 子:26
专家分:42
注 册:2011-9-14
收藏
得分:0 
不用写p=&(a-1);
直接p=a即可;数组名就是数组的首地址;
也可以看做a就是一个指针常量,不能改变的指针地址;
 
2011-10-02 16:58
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
收藏
得分:0 
需要20个数组元素的话  定义a[21]  下标从a[1]-a[20]一样可以...不过这绝对是个坏习惯,多写写用数组的程序 不就习惯了 无所谓的啦
2011-10-02 18:39
快速回复:关于数组下标的问题
数据加载中...
 
   



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

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