(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}\nRun 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 \nRun Code Online (Sandbox Code Playgroud)\n