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



我写了一个程序

#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] 相同。

相关内容

  • 没有找到相关文章

最新更新