| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 254 人关注过本帖
标题:移动数组元素问题
收藏  订阅  推荐  打印 
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6
移动数组元素问题

请各位看一下这个简单的程序,,运行出错了,哪位指点一下,错在什么地方.
#include <stdio.h>
Move(int number[20], int n, int m);
int main()
{
    int number[20],n,m,i;
    printf("How many numbers?\n");
    scanf("%d",&n);
    printf("Input the %d numbers:\n",n);
    for(i=0; i<n; i++)
        scanf("%d",&number[i]);
    printf("How many number do you want to move?\n");
    scanf("%d",&m);

    Move(number,n,m);

    printf("Now they are:\n");
    for(i=0; i<n; i++)
        printf("%5d ",number[i]);
    return 0;
}

Move(int array[20], int n, int m)
{
    int *p, arrayEnd;
    arrayEnd=*(p+n-1);

    for(p=array+n-1; p>array; p--)
    {
        *p=*(p-1);
    }

    *array=arrayEnd;
    m--;

    if(m>0)
        Move(array,n,m);  

}
搜索更多相关主题的帖子: 元素  int  Move  number  include  
2008-8-16 10:42
ronaldfree
Rank: 1
等级:新手上路
帖子:36
积分:496
注册:2008-8-2

Move函数的第一个参数应为int *array
2008-8-16 10:50
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6
$$$$

上面说的对,这是个错误,但是改过来,结果还是错的!
2008-8-16 17:15
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6
$$$

参数就用 int array[20] 也是对的!这不是运行错误的原因
2008-8-16 17:20
csynyk
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1460
注册:2008-8-9

int *p, arrayEnd;
    arrayEnd=*(p+n-1);   //此时p还是一个没有初始化的野指针,指向不可知的地址。

http://blog.csdn.net/csynyk
2008-8-16 17:20
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6
回复 5# csynyk 的帖子

兄弟你说的对!
2008-8-16 17:24
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6
回复 5# csynyk 的帖子

感谢了! 指针声明的时候就应该给它初始化,防止使用野指针
2008-8-16 17:24
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051360 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved