我写了一个程序
#include<stdio.h>
int *sqrt(int a[10]);
int main()
{
int a[10],i,*b;
printf("enter your integers \n");
for(i=0;i<10;i++)
scanf("%d",a+i);
b=sqrt(a[10]);
printf("the modulus of this values are\n");
printf("%d",*(b));
return 0;
}
int *sqrt(int x[10])// function
{
int *c,i;
for(i=0;i<10;i++)
{
x[i]=x[i]*x[i];
}
c=x;
return p;
}
输入值后,代码会给我一个分段错误。我在这里犯了什么错误?
答案 0 :(得分:0)
您正在将11 th 元素传递给sqrt()
:
b = sqrt(a[10]);
您想要传递第一个元素的地址:
b = sqrt(&a[0]);
甚至更直接:
b = sqrt(a);
使用数组a
上面的构造衰减到指向其1 st 元素的指针,该元素与&a[0]
相同。