gpt4 book ai didi

c - 从结构体中的指针获取数组

转载 作者:行者123 更新时间:2023-11-30 15:27:43 25 4
gpt4 key购买 nike

我有这样的结构

struct quantum_reg_struct
{
int width; /* number of qubits in the qureg */
int size; /* number of non-zero vectors */
int hashw; /* width of the hash array */
COMPLEX_FLOAT *amplitude;
};

typedef struct quantum_reg_struct quantum_reg;

quantum_reg reg;

如果 *amplitude 指向 COMPLEX_FLOAT 类型的数组的开头,那么我希望能够将其存储在 Complex_float 类型的数组中。我可以吗?

其次我需要了解 -> 运算符的用法。如果这样写会发生什么。

reg->amplitude[1] *= -1;

最佳答案

事实上,如果您访问幅度而不将其分配给内存,您的代码将会崩溃。

quantum_reg reg;
reg.amplitude = malloc(5 * sizeof (COMPLEX_FLOAT));
reg.amplitude[0] = 1.2f; // I'm guessing COMPLEX_FLOAT is just a typedef'd float for this to work
reg.amplitude[1] = 1.5f;
// reg->amplitude won't compile because reg is not a pointer.
// if COMPLEX_FLOAT is a struct, then reg.amplitude->fieldname could work, where fieldname is something in COMPLEX_FLOAT.
free(reg.amplitude); // free the allocated memory.

如果振幅具有固定数量的元素,请考虑将其重新定义为数组,例如COMPLEX_FLOAT 幅度[5];。这更容易使用,因为您不必担心 mallocfree。 malloc 和 free 的优点是您可以在运行时选择大小(元素数量),但如果您不需要这个,请坚持使用数组。

关于c - 从结构体中的指针获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com