| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5364 人关注过本帖
标题:定义数组a[10],为什么a[10]可以使用?
只看楼主 加入收藏
QINGMANG
Rank: 2
等 级:论坛游民
帖 子:14
专家分:35
注 册:2015-11-13
结帖率:100%
收藏
 问题点数:0 回复次数:8 
定义数组a[10],为什么a[10]可以使用?
#include <stdio.h>
int main()
{
    int i,j,min,m,a[10];
    printf("请输入10个整数:\n");
    for(i=1;i<=10;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    printf("\n");
    printf("初始的整数是:\n");
    for(i=1;i<=10;i++)
        printf("%5d",a[i]);
    printf("\n");
    for(i=1;i<=9;i++)
    {
        min=i;
        for(j=i+1;j<=10;j++)
            if(a[min]>a[j])
                min=j;
            m=a[i];
            a[i]=a[min];
            a[min]=m;
    }
    printf("排序后的整数是:\n");
    for(i=1;i<=10;i++)
        printf("%5d",a[i]);
    printf("\n");
    return 0;
}
2015-11-15 16:51
winner1995
Rank: 2
等 级:论坛游民
帖 子:64
专家分:41
注 册:2015-10-11
收藏
得分:0 
定义数组啊a[10]应该只是分配了十个整数的存储空间
a[0]至a[9]和a[1]到a[10]都 是十个空间  按你这样输入a[11]肯定不能用

唯望君安~
2015-11-15 23:38
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
因为编译器没检查数组下标


莫问前尘有愧,但求今生无悔
2015-11-16 09:25
QINGMANG
Rank: 2
等 级:论坛游民
帖 子:14
专家分:35
注 册:2015-11-13
收藏
得分:0 
回复 2楼 winner1995
a[11]也可以用,定义数组下标是从0开始的
2015-11-17 00:13
QINGMANG
Rank: 2
等 级:论坛游民
帖 子:14
专家分:35
注 册:2015-11-13
收藏
得分:0 
回复 3楼 pycansi
可是我试过即使定义a[10],我也可以用到a[11],a[10]不是只定义十个内存空间么?
2015-11-17 00:16
lzl123321
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:41
专家分:148
注 册:2015-10-15
收藏
得分:0 
读取一个数组,需要两个参数:首地址和元素个数。
数组读取数据的过程是先取首地址,然后根据下标向后偏移n,然后读取该地址所属空间的数值。数组的这种访问方式叫具名+匿名访问!
这种取值方式决定了,超n也无所谓,编译器只需要在首地址加上下标n找到地址即可!不过这个数值跟定义的数组已经没有任何关系了。
 for(i=1;i<=10;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }

这里你已经为a[10]赋值了,当然可以读取,不过这个a[10]你根本没有声明,而是在循环体内强制赋值,如果此空间已经被调用然后又被你强制赋值,结果怎么样谁知道呢。。。。



[此贴子已经被作者于2015-11-17 05:28编辑过]

2015-11-17 04:48
lzl123321
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:41
专家分:148
注 册:2015-10-15
收藏
得分:0 
以下是引用QINGMANG在2015-11-17 00:16:37的发言:

可是我试过即使定义a[10],我也可以用到a[11],a[10]不是只定义十个内存空间么?

这里是系统自动分配给你10个连续可用的空间,但并不保证第十一个空间是可用的,你当然可以读取,所有的内存都可以读取的

[此贴子已经被作者于2015-11-17 05:33编辑过]

2015-11-17 05:07
心梦无痕1
Rank: 2
等 级:论坛游民
帖 子:6
专家分:27
注 册:2015-12-17
收藏
得分:0 
因为你的10个值是赋值给下标1到10的空间,没用到0,所以是可以的
2015-12-17 10:30
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:0 
你a[100]也可以使用,只是不是你需要的而已

好好学习,天天向上!
2015-12-17 10:35
快速回复:定义数组a[10],为什么a[10]可以使用?
数据加载中...
 
   



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

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