不兼容的指针类型??奇怪

时间:2011-08-16 16:18:41

标签: iphone ios xcode accelerate-framework

我需要得到方程系统的解。为此,我使用函数sgesv _()。

一切都很有效,它让我得到了解决方案的正确结果。

但我得到一个奇怪的警告。

  

警告:从不兼容的指针类型

传递'sgesv_'的参数3

我正在使用该功能,因为Apple在WWDC视频上使用它。

我做错了什么?

a1,a2,b1,b2,c1,c2是浮点数

        __CLPK_integer info;
        __CLPK_integer n=2;
        __CLPK_integer nb=1;
        __CLPK_integer ipiv[n];
        float A[n][n];
        A[0][0]=a1;
        A[0][1]=a2;
        A[1][0]=b1;
        A[1][1]=b2;
        float B[n];
        B[0]=-c1;
        B[1]=-c2;
        sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info);

1 个答案:

答案 0 :(得分:4)

第三个参数是float *,但是你传递了一个浮点数组。碰巧这些花车的顺序正确。要摆脱警告,你可以这样做:

    sgesv_(&n, &nb, &A[0][0], &n, ipiv, B, &n, &info);

或者这个:

    sgesv_(&n, &nb, A[0], &n, ipiv, B, &n, &info);

甚至是这样:

    sgesv_(&n, &nb, (float *)A, &n, ipiv, B, &n, &info);

或者你可以“扁平化”你的A阵列,例如

    float A[n * n];
    A[0 * n + 0] = a1;
    A[0 * n + 1] = a2;
    A[1 * n + 0] = b1;
    A[1 * n + 1] = b2;
    // ...
    sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info);