【发布时间】:2016-01-23 19:36:07
【问题描述】:
我有一个for循环的问题,它应该将指针的结构信息放入数组。此结构用于复数。问题是数字 m[n].re/.im - 它们不是 korrekt。
typedef struct
{
float re, im;
} Complex;
#define N 2
#define M 2
int main()
{
Complex* p;
Complex matrix[N][M]; //already filled
Complex m[N*M];
int n;
n = 0;
p = NULL;
for(p = &matrix[0][0]; p<= &matrix[0][0]+N*M-1; p++)
{
m[n] = *p;
n = n+1;
}
}
【问题讨论】:
-
1) 使用标准类型! C 已经有
_Complex(虽然它是可选的——检查你的编译器)。 2)类型是有原因的。为什么不正确索引二维数组? 3) 不要使用单字母宏名称。ROWS有什么问题? 4)使用相同的字母只是不同的大小写已经是不好的风格了。将它们用于不相关的项目更糟糕。 -
为什么评论“已经填满”?
Complex matrix[N][M];未初始化。 -
基本上我觉得你的代码是没有问题的。 DEMO 它将按预期工作。 (二维数组的特殊情况,除了那些不需要的)
标签: c arrays pointers matrix struct