C:从函数返回矩阵

时间:2014-02-17 05:32:58

标签: c

我正在尝试在DEVC ++ v5.5.2中运行以下代码 以下错误“从不兼容的指针类型返回”显示在属于头文件的行“return arr”中。另一个错误是“在类型'double complex *'中分配类型'double complex'时出现的不兼容类型,在”result [0] [j] = CircularShift(arr);“主程序。

请帮我解决这个问题。

提前谢谢

main.c代码

enter code here
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include"complex.h"
#include"shiftcheck.h"
#define SIZE 6
double complex *CircularShift(double complex arr[1][SIZE]);
void display(double complex arr[1][SIZE]);
int main()
{
int no,i,j;
    double complex (*result)[839],*result1;
    double complex arr[1][SIZE]={2,3,4,1,8,9,};
    printf("\nHow many times do you want the array to perform circular shifting?\n");
    scanf("%d",&no);

     for(j=0;j<no;j++)
    result[0][j] = CircularShift(arr);
执行上面的行时会弹出

/ 此错误 - &gt;“从类型为'double complex '分配给类型'double complex'时出现不兼容的类型'* /

for(i=0;i<SIZE;i++)
{
    printf("%.2f+%.2fi\t",creal(result[0][i]),cimag(result[0][i]));

}
printf("\n");
getch();
return 0;
}

头文件如下

#include<stdio.h>
#include<conio.h>
#include"complex.h"
#define SIZE 6
void display(double complex arr[1][SIZE]);
double complex *CircularShift(double complex arr[1][SIZE])
{
    double complex temp[1][1];
temp[0][0] = arr[0][SIZE-1];
int i;//put the last element in the temp variable
    for(i=SIZE-1;i>0;i--)//shift each value to the next value so that a hole can be          created in the beginning
    arr[0][i]=arr[0][i-1];//shift the values,index 0 is not changed 
    arr[0][0]=temp[0][0];
    //display(arr);
    return arr;/* the error in this line is "return from incompatible pointer type"*/
}

1 个答案:

答案 0 :(得分:0)

#include警卫放在complex.h档案中(因此只包含一次):

#ifndef COMPLEX_H
#define COMPLEX_H
<insert complex.h stuff here>
#endif

然后删除main.c中的函数声明;你已经在shiftcheck.h中定义了它们。