| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 445 人关注过本帖
标题:【新手求助】请大家帮帮纠正下代码!
取消只看楼主 加入收藏
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
结帖率:80%
收藏
 问题点数:0 回复次数:4 
【新手求助】请大家帮帮纠正下代码!
我按照书上的写了个利用指针复制数组的代码,编译成功了,但运行中断,提示:
Run-Time Check Failure #2 - Stack around the variable 'array' was corrupted.

代码如下:
程序代码:
#include <stdio.h>

void mycopy(int *px,int *py,int slen); //声明函数
void disp(int *p,int len);   //声明函数
void main()
{
    int array[20]={0}; //初始化数组
    int array2[]={1,2,3,4,5,6};

mycopy(array,array2,sizeof(array2)); //调用复制函数

disp(array,6);  //调用打印函数
}

void mycopy(int *px,int *py,int slen) //复制数组
{
    int i;
for(i=0;i<slen;i++)
{
*px++=*py++;

}

}

void disp(int *p,int len) //打印复制后的数组

{
    int n;

    for(n=0;n<len;n++)
    {
    printf("%d\n",*(p+n));
   
   
    }

}




搜索更多相关主题的帖子: around 
2011-05-28 10:32
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
收藏
得分:0 
我看的是C++轻松入门,可发现入门并不轻松

我有C程序设计,是谭浩强的,但他说的不好,感觉...

反正C++中有很多和C相同,所以看书时就尝试吧C++代码转化为C,然后写出来了
2011-05-28 10:40
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
收藏
得分:0 
回复 2楼 ab6326795
哥,你说的对哦
 1.当我
mycopy(array,array2,sizeof(array2)); //调用复制函数
改成
mycopy(array,array2,6); //调用复制函数


运行就没问题了

检查下才发现可能是书得写法有问题吧?书上没明确说明吧?

2.还有种将错就错的方法就是修改
  int array[20]={0}; //初始化数组

把数组大小提高到30就没问题了
  int array[30]={0}; //初始化数组

呵呵,有各位的帮助真好,谢啦
2011-05-28 10:55
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
收藏
得分:0 
回复 4楼 ansic
照你的写法测试也有问题啊,提示:
Run-Time Check Failure #2 - Stack around the variable 'array' was corrupted.

运行时检查失败#2- 围绕变量数组'堆栈损坏。
2011-05-28 11:00
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
收藏
得分:0 
回复 7楼 ansic
你这样写就运行成功,这等效于:
程序代码:
#include <stdio.h>

void mycopy(int *px,int *py,int slen); //声明函数
void disp(int *p,int len);   //声明函数
void main()
{
    int array[20]={0}; //初始数组
    int array2[]={1,2,3,4,5,6};
mycopy(array,array2,6); //调用复制函数

disp(array,6);  //调用打印函数

getch();
}

void mycopy(int *px,int *py,int slen) //复制数组
{
    int i;
for(i=0;i<slen;i++)
{
*px++=*py++;

}

}

void disp(int *p,int len) //打印复制后的数组

{
    int n;

    for(n=0;n<len;n++)
    {
    printf("%d\n",*(p+n));
   
   
    }

}



我以为你上上面说把局部改成
 int i=0;
        while(i<slen)

{
*px++=*py++;
i++;
}

就可以了,原来你说这
mycopy(array,array2,sizeof(array2)); //调用复制函数
也要改,
mycopy(array,array2,6); //调用复制函数

已经成功了 ,谢谢
2011-05-28 11:44
快速回复:【新手求助】请大家帮帮纠正下代码!
数据加载中...
 
   



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

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