变长数组可以用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就是不同的内存地址上的数组,但是它们的元素值完全一样。
如果我的回答解决了您的问题,请采纳我的回答