| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2457 人关注过本帖
标题:请看一下我为什么将数组一初始化就出错,不初始化就是对的???
取消只看楼主 加入收藏
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:8 
请看一下我为什么将数组一初始化就出错,不初始化就是对的???
#include <stdio.h>

void sort(int *a,int n)
{
    int i,j,k,t;
    for(i=0;i<n-1;i++)
    {
        k = i;
        for(j=i+1;j<n;j++)
        {
            if(*(a+k)<*(a+j))
                k=j;
        }
        if(k!=i)
        {
            t = *(a+i);
            *(a+i) = *(a+k);
            *(a+k) = t;
        }
    }
}
int  max(int *a,int n)
{
    int i,max;
    max = i;
    for(i=0;i<n;i++)
    {
        if(*(a+max)<*(a+i))
            max = i;
    }
    return (a[max]);
}
int main()
{
    int i,n;
    printf("Please input the number:\n");
    scanf("%d",&n);
    int arr[n]={0};
    for(i=0;i<n;i++)
    {
        printf("Please input %dth number:\n",i+1);
        scanf("%d",&arr[i]);
    }
    printf("The input number is :\n",n);
    for(i=0;i<n;i++)
    {
        printf("%d ",arr[i]);
    }
    printf("\n");
    sort(arr,n);
    printf("Form big to small order is :\n");
    for(i=0;i<n;i++)
    {
        printf("%d ",arr[i]);
    }
    printf("\n");
    int maxnum = max(arr,n);
    printf("The max number is:\n");
    printf("%5d\n",maxnum);
}

搜索更多相关主题的帖子: include return 
2013-12-22 18:42
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
这是将一个不确定个数的数组排序的函数,将数组初始化就会出现错误,不初始化却是正确的,这是为什么?
2013-12-22 18:43
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
max.c:38:2: error: variable-sized object may not be initialized
max.c:38:2: warning: excess elements in array initializer
max.c:38:2: warning: (near initialization for ‘arr’)
这是现实的错误信息和警告。。
2013-12-22 18:45
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
回复 5楼 ljx小子
但是为什么对数组不初始化,程序运行是正确的?
2013-12-22 22:12
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
以下是引用神机军师在2013-12-22 22:44:57的发言:

呃啊,好吧你当我手贱了。。。。 嗯,这里:
 
int  max(int *a,int n)
{
    int i,max;
    max = i;
    for(i=0;i

说法是对的,那就应该给max赋初值0,但是如果是max=i,在程序执行过程中,结果为什么并没有影响?
2013-12-23 09:05
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
回复 7楼 神机军师
    int i,n;
    printf("Please input the number:\n");
    scanf("%d",&n);
    int arr[n]={0};

我的也是这种情况,先是输入n的值,和你那个直接给n 赋值一样的效果,但是就是不明白为什么会出错,但是对数组不进行初始化的时候就是对的。。
2013-12-23 09:08
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
回复 4楼 神机军师
malloc分配动态内存单元,这个怎么用,我虽然知道这个可以用,但是不会用。。
2013-12-23 09:11
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
回复 4楼 神机军师
这个应该用calloc(unsigned n,unsigned size)吧,

calloc作用是分配n个数据项的内存连续空间,每个数据项的大小为size,

malloc(unsigned size)作用是分配size字节的存储区
2013-12-23 09:23
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
收藏
得分:0 
回复 18楼 神机军师
呵呵,我也是菜鸟一枚,初学者
2013-12-23 18:14
快速回复:请看一下我为什么将数组一初始化就出错,不初始化就是对的???
数据加载中...
 
   



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

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