|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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));
}
|
|