我写了一个程序
#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 aren");
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;
}
输入值后,代码给了我一个分段错误。我在这里犯了什么错误?
您将第 11个元素传递给 sqrt()
:
b = sqrt(a[10]);
您要传递第一个元素的地址:
b = sqrt(&a[0]);
甚至更直接:
b = sqrt(a);
使用数组上方的构造a
衰减到指向其 1st 元素的指针,这与 &a[0]
相同。