迷砖00 发表于 2020-12-23 23:08:16

C语言

大佬帮忙看一下,这个程序中的数组长度不是已经去确了吗?但是输入n之后,数组长度改变了,这是为什么?谢谢了
#include<stdio.h>
int main(void)
{
        int i,n,iIndex,temp;
        int a;
        printf("enter n: ");
        scanf("%d",&n);
        printf("enter %d integers:\n");
        for(i=0;i<n;i++)
        scanf("%d",&a);
        iIndex=0;
        for(i=1;i<n;i++)
        {
                if(a<a)iIndex=i;
        }
        temp=a;a=a;a=temp;
        for(i=0;i<n;i++)
        printf("%5d",a);
        printf("\n");
        return 0;
}

风过无痕1989 发表于 2020-12-23 23:10:43

本帖最后由 风过无痕1989 于 2020-12-23 23:14 编辑

以实际输入的为准。这就好比,我的宾馆准备了300张床位,一个团队实际来了多少人,就开多少间房。只能 少,不能多哟~~,你不能一下子来5 - 600人,我那对不起,你得另外找地方住

weekend2000 发表于 2020-12-24 03:55:31

由用户输入n然后访问数组,n大于10就会产生越界,这个小甲鱼视频中讲过,虽然编译器不会报错,但是例如a【11】是越界访问,对应的是内存中的随机值。实际上定义的数组长度没有变,可以用sizeof(a)/sizeof(a)查看数组长度
页: [1]
查看完整版本: C语言