函数返回指针中的分段错误

时间:2015-03-15 11:09:07

标签: c pointers segmentation-fault

我写了一个程序

#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;
} 

输入值后,代码会给我一个分段错误。我在这里犯了什么错误?

1 个答案:

答案 0 :(得分:0)

您正在将11 th 元素传递给sqrt()

b = sqrt(a[10]);

您想要传递第一个元素的地址:

b = sqrt(&a[0]);

甚至更直接:

b = sqrt(a);

使用数组a上面的构造衰减到指向其1 st 元素的指针,该元素与&a[0]相同。