| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:求助!调用数组时数组值发生变化
取消只看楼主 加入收藏
xiaozz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-27
收藏
 问题点数:0 回复次数:3 
求助!调用数组时数组值发生变化
#include<stdio.h>
#include<math.h>
int main()
{
int a[5]={1,2,3,4,5},b[6]={1,2,3,4,5,6};
int c[9],*p;
p=c;
void xcorr(int a[],int la,int b[],int lb,int l,int *p);
xcorr(a,5,b,6,6,p);
for(int i=0;i<13;i++)
printf("%d ",c[i]);
return 0;
}

void xcorr(int a[],int la,int b[],int lb,int l,int *p)//求互相关,la,lb为数组a,b的长度
{int max(int a,int b);
 int min(int a,int b);
 int i,j;
 for(i=-1*l;i<=l;i++)
 {
    *(p+i+l)=0;
    if(max(0,i)<min(la,i+lb))
        for(j=max(0,i);j<min(la,i+lb);j++)//使数组内各值存在
        {*(p+i+l)+=a[j]*b[j-i];//求互相关公式
        printf("%d %d ",j-i,b[j-i]);}//为显示数值发生变化
    printf("\n");
 }
}

 int max(int a,int b)
 {int c;
 c=(a>b)?a:b;
 return c;
 }


  int min(int a,int b)
 {int c;
 c=(a<b)?a:b;
 return c;
 }
运行后数组b的值发生变化,请高手指导
搜索更多相关主题的帖子: include return 
2013-08-27 21:35
xiaozz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-27
收藏
得分:0 
回复 2楼 shenxiaoke05
void xcorr(int a[],int la,int b[],int lb,int l,int *p)要实现什么功能?能说一下吗?   这是把matlab的互相关指令用c语音编写
void xcorr(int a[],int la,int b[],int lb,int l,int *p);   //这句应该删除,函数定义不应该在主函数里  这句是函数声明
for(int i=0;i<13;i++)     //这里的i<13是为什么? c[]数组的长度不是9吗?为什么越界?  就是这里错了,感谢!c[]的长度短了
int min(int a,int b); //max和min的函数写到这里什么意思?感觉莫名其妙   这个程序要用到max和min函数,这是声明
for(i=-1*l;i<=l;i++)   //这里 i的初始值等于-l*l什么意思?(感觉这个循环体有问题哦)  这句指令是由matlab的互相关指令来的,比如x[-3],x[-2],x[-1],x[0],x[1],x[2],x[3]
  if(max(0,i)<min(la,i+lb))   //这句话有什么意义吗?    这题,比如i=5,max(0,i)=5,min(la,i+lb)=5,if为假。否则for(j=5;j<5;j++)会先执行j=5,再中断,会出错
感谢你的回复
2013-08-28 15:24
xiaozz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-27
收藏
得分:0 
回复 4楼 guhemeng
我习惯什么时候用,什么时候声明。想到哪写到哪。以后会试着改进。
为什么数组b的值会发生变化?是由c[]的值反过来求b[]的值吗
2013-08-28 20:47
xiaozz
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-27
收藏
得分:0 
回复 6楼 guhemeng
for(j=max(0,i);j<min(la,i+lb);j++)//使数组内各值存在
        {*(p+i+l)+=a[j]*b[j-i];//求互相关公式
        printf("%d %d ",j-i,b[j-i]);}//为显示数值发生变化
我的这个指令在c[]越界时,显示j-i和b[j-i]不对应,不知道为什么
2013-08-29 17:49
快速回复:求助!调用数组时数组值发生变化
数据加载中...
 
   



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

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