小编Gab*_*ini的帖子

使用结构体在C中实现复杂的乘积?

(c 环境,Visual Studio)\n我有这个练习:计算两个复数之间的乘积。结果由 comp1 指向。\n我知道两个复数是这样相乘的:

\n

(a+ib)*(c+id)=(ac\xe2\x88\x92bd)+i(ad+bc)。我做到了。这是一个非常简单的程序,事实上我只使用了 1 行(在函数中)。但在调试器中我读到:

\n

“不能将 double 类型的实体分配给“struct complex”类型的实体”。

\n

我尝试使用强制转换运算符,但我发现这对于结构类型是非法的。所以我感觉完全迷失了。\n我知道这个理论:\n如果我想将结构传递给函数,我需要使用指针。为了使用指针访问结构体成员,我使用语法糖“箭头运算符”->”。它的意思是“*(p).x”。\n那么它有什么问题呢?

\n

几何.c

\n
#include "complex.h"\n#include "stdlib.h"\nvoid complex_product(struct complex *comp1, struct complex *comp2) {\n    *comp1 =  ((comp1->re * comp2->im) - (comp1->im * comp2->im)) + ((comp1->re * comp2->im) + (comp1->im * comp2->re));\n}\n
Run Code Online (Sandbox Code Playgroud)\n

几何.h

\n
#if !defined COMPLEX_H \n#define COMPLEX_H\nstruct complex {\n    double re, im; \n};\nextern void complex_product(struct complex* comp1, struct complex* comp2); \n\n#endif \n
Run Code Online (Sandbox Code Playgroud)\n

c struct pointers

0
推荐指数
1
解决办法
197
查看次数

标签 统计

c ×1

pointers ×1

struct ×1