动态分配数组问题C.

Cat*_*ita 7 c arrays pointers memcpy dynamic-memory-allocation

要清楚,我的代码完美无缺.我担心的问题是我不确定我的数组分配类型.

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

然而,值已经在数组中给出.所以我需要在其中添加这些值.

为了保持我的矢量动态分配并避免以下情况:

float *p;
 p = malloc(9 * sizeof(float));
* p=2;
* (p+1)=60;
* (p+2)=-23;
.
.
.
* (p+8)=9;
Run Code Online (Sandbox Code Playgroud)

我试过这样做:

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

现在我不确定因为memcpy将一个静态分配的数组复制到我的p.我的问题是:我的阵列仍然是动态分配的?

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

chu*_*ica 6

我的数组仍然保持动态分配?

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

是.指针的值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;
}
Run Code Online (Sandbox Code Playgroud)