|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:把a数组的n个数的平方值,与b数组中逆序的n个数的平方值一一对应相加,存放在c数组中。
#include <stdio.h>
#include <stdlib.h>
int func(int *a,int *b,int n)
{
int m,*c;
c=(int *)malloc(n*sizeof(int));
for(m=0;m<n;m++)
{
c[m]=(a[m])*(a[m])+(b[n-m-1])*(b[n-m-1]);
//printf("debug:a[%d]=%d,b[%d]=%d\n",m,a[m],n-m-1,b[n-m-1]);
}
for(m=0;m<n;m++)
{
printf("%d ",c[m]);
}
free(c);
return c[m];
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9},
b[5]={4,3,2,1,0},
n=5;
int res=func(a,b,n);
printf("%d",res);
}
运行后c[m]打印的结果正确,但是main函数最后res的打印结果是-572662307。
疑问如下:
1. 这里res的值为什么不等于c[5]?
2. 如果要在main函数中打印数组c的每个元素,怎么传回c的地址?
1. 这里res的值为什么不等于c[5]?
return c[m]在结束是c[n] ,越界了,要改成return c[m-1];
2. 如果要在main函数中打印数组c的每个元素,怎么传回c的地址?
可以将*c定义成全局变量。那么你在main函数里也能使用了。
#include <stdio.h>
#include <stdlib.h>
int n;
int *c;
int func(int *a,int *b,int n)
{
int m;
c=(int *)malloc(n*sizeof(int));
for(m=0;m<n;m++)
{
c[m]=(a[m])*(a[m])+(b[n-m-1])*(b[n-m-1]);
//printf("debug:a[%d]=%d,b[%d]=%d\n",m,a[m],n-m-1,b[n-m-1]);
}
for(m=0;m<n;m++)
{
printf("%d ",c[m]);
}
free(c);
return c[m-1];
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9},
b[5]={4,3,2,1,0};
n=5;
int res=func(a,b,n);
printf("%d\n",res);
printf("%d",*(c+4));
}
|
|