c - C中的复数问题

标签 c

我有一段更大的代码(不是我写的),它使用了通过结构定义的复数。我需要对其进行编辑,并简单地将一个复数乘以一个实数,但似乎无法正确处理。我不断收到以下错误消息。

error: invalid operands to binary * (have ‘cplx’ and ‘double’)

我知道这可以使用 complex.h 库来完成,但这意味着需要大量重写,所以有更简单的方法吗?下面的代码重现了我的问题。

#include <stdio.h>
#include <math.h>

typedef struct cplxS {
    double re;
    double im;
} cplx;

int main()
{   
    double a = 1.3;
    cplx b = {1, 2};
    c = a * b;
}

最佳答案

您首先必须使用 malloc 初始化一个节点

 #include <stdlib.c>

 int main(){   
    double a = 1.3;

    //initialize struct
    struct cplxS* b = malloc(sizeof(struct cplxS));

    //set values for b
    b->re = 1;
    b->im = 2;

    //preform your multiplication
    double c = a*(b->re); //value c with re
    double d = a*(b->im); //value d with im

    //free node memory 
    free(b);
    b = NULL;
}

如果你想通过将 c 乘以它的值来更新结构,它会遵循

 #include <stdlib.c>

 int main(){   
    double a = 1.3;

    //initialize struct
    struct cplxS* b = malloc(sizeof(struct cplxS));

    //set values for b
    b->re = 1;
    b->im = 2;

    //preform your multiplication
    b->re = a*(b->re); //update b with a*re
    b->im = a*(b->im); //value b with a*im

    //free node memory 
    free(b);
    b = NULL;
}

希望这对您有所帮助!

关于c - C中的复数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769100/

相关文章:

c - 枚举长度的数组大小给出编译错误

c - 从列表中搜索缓冲区以查找任何字符串的高效算法

c - 双向链表中的插入和删除

c++ - 在分配的地址实例化结构(分配赋值)

c - 为什么同样的程序在 linux 2.6.32 中比 2.6.18 慢?

c - _mm_load_si128 上的 sse 段错误

c - 如果两个进程都在执行同一个程序,是否可以在没有 exec 的情况下使用 fork?

c - 为什么我收到预期标识符或 '(' ?

c - 指针算术和有符号/无符号转换!

c - 当我在嵌套的 for 循环中包含括号时,它无法正常运行,但当我将它们取出时,它可以正常运行;为什么是这样?