变长数组可以用memcpy复制吗?

变长数组可以用memcpy复制吗?
如何复制?
复制的结果是两个内存地址不同的数组,还是相同的数组?

你是啥样的变长数组啊?
在复制的那一刻,大小肯定是确定的,用memcpy当然能复制,但要求你这个数组数据结构内存空间必须是连续的才能用memcpy

#include <stdio.h>
#include <string.h>

int main(void)
{

int n,i;
int a[n],b[n];

printf("输入一个数字:> ");
scanf("%d",&n);


printf("输入 %d 个数值:> ",n);

for(i = 0; i < n; i++)
    scanf("%d",&a[i]);

memcpy(b,a,sizeof(a));

for(i = 0; i < n; i++)
    printf("a[ %d ] = %d\n",i,a[i]);

for(i = 0; i < n; i++)
    printf("b[ %d ] = %d\n",i,b[i]);

return 0;

}

以下答案引用自GPT-3大模型,请合理使用:

示例

是的,变长数组可以用memcpy复制,假设待复制的数组为arr1,复制得到的新数组为arr2,可以使用memcpy函数将arr1复制到arr2中:

// 复制数组arr1到arr2
int arr1[count] = {...};
int arr2[count];
memcpy(arr2, arr1, sizeof(arr1));

这样,arr1和arr2就是不同的内存地址上的数组,但是它们的元素值完全一样。

如果我的回答解决了您的问题,请采纳我的回答