liujia1067 发表于 2007-1-24 21:31

求救:如何实现二维数组的指针形式调用(cvi)

想要用指针实现二维数组的动态定义,但如程序所示,如果直接定义成ComplexNum co;则可以在函数参数传递时直接输入数组名co。但如果定义成ComplexNum **p,则在函数参数传递时会提示出错:FATAL RUN-TIME ERROR:   "test.c", line 52, col 14, thread id 0x00000DEC:   Array argument too small (12 bytes).Argument must contain at least 144 bytes (144 elements).
似乎是系统运行时不认可p是一个二维数组,只认为是一维的。

#include <analysis.h>
#include <ansi_c.h>
#include <userint.h>
#include <formatio.h>

main()
{
   ComplexNum y;
   ComplexNum co;
   ComplexNum **p;
   int i=0,j=0;
   int n=3;

   p=(ComplexNum**)malloc(3*sizeof(ComplexNum*));
   for(i=0;i<3;i++)
   p=(ComplexNum*)malloc(3*sizeof(ComplexNum ));
   
/*下面是对二维数组co和p的赋值**/
   for(i=0;i<n;i++)
       { for(j=0;j<n;j++)
                         if(i<j)
                         p.imaginary=(-1)*((i*n)+j+1);
                         else
            p.imaginary=(i*n)+j+1;
       }
   
    for(i=0;i<n;i++)
       { for(j=0;j<n;j++)
            p.real=(i*n)+j+1;
            
       }
      
    for(i=0;i<n;i++)
       { for(j=0;j<n;j++)
                         if(i<j)
                         co.imaginary=(-1)*((i*n)+j+1);
                         else
            co.imaginary=(i*n)+j+1;
       }
      
   for(i=0;i<n;i++)
       { for(j=0;j<n;j++)
             co.real=(i*n)+j+1;
            
       }

/*调用函数对二维数组实现共轭转置*/
CxTranspose(co,3,3,y);//这样传递参数可以
CxTranspose(p,3,3,y); //wrong! 提示: Array argument too small (12 bytes)
                                 //Argument must contain at least 144 bytes (144 elements).          
NULL;
}

liujia1067 发表于 2007-1-24 21:31

渴望得到高人指点!:@)

liujia1067 发表于 2007-1-25 19:29

拜托啊
没人吗?:'(

pixy 发表于 2007-3-20 10:27

关注啊
页: [1]
查看完整版本: 求救:如何实现二维数组的指针形式调用(cvi)