gpt4 book ai didi

c - 数组问题C的动态分配

转载 作者:太空狗 更新时间:2023-10-29 17:09:14 26 4
gpt4 key购买 nike

需要说明的是,我的代码运行完美。我担心的问题是我不确定我的数组分配类型。

我的任务相当简单:我需要在动态分配的数组中执行一些操作。

然而,数组中已经给出了值。因此,我需要在其中添加这些值。

保持我的 vector 动态分配并避免以下情况:

float *p;
p = malloc(9 * sizeof(float));
* p=2;
* (p+1)=60;
* (p+2)=-23;
.
.
.
* (p+8)=9;

我试过这样做:

float *p;
p = malloc(9 * sizeof(float));
memcpy (p, (float[]) {2 ,60 ,-23, 55, 7, 9, -2.55, -66.9, 9}, 9 * sizeof(float));

现在我不确定,因为 memcpy 将静态分配的数组复制到我的 p 中。那么我的问题是:我的数组仍然保持动态分配?

编辑:我的问题是指第二个代码。

最佳答案

my array still remains dynamically allocated?

float *p;
p = malloc(9 * sizeof(float));
memcpy ( p, (float[]){2,60,-23,55,7,9,-2.55,-66.9,9}, 9 * sizeof(float));

是的。指针 p 的值保持不变。它仍然指向动态分配的内存。
p[0],第一个元素现在的值为2.0f
p[1],下一个元素现在的值为 60.0f,等等。


一些编码建议:

int main(void) {
#define COUNT 9
float *p = malloc(sizeof *p * COUNT);
if (p) {
memcpy(p, (float[COUNT] ) { 2, 60, -23, 55, 7, 9, -2.55f, -66.9f, 9 },
sizeof *p * COUNT);
//...
}
free(p);
return 0;
}

关于c - 数组问题C的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266109/

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