【发布时间】:2015-02-07 07:22:54
【问题描述】:
我想将两个相同类型的数组连接成一个具有相同类型的新数组。但问题是我必须使用void 指针,并且不知何故,我的代码从第三个元素开始就无法工作。我在互联网上搜索了一下,但似乎没有人遇到这个问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void array_float_fill(float *arr1, float *arr2, int n, int m){
for(int i = 0;i<n;i++){
*(arr1+i)=i+n;
}
for(int i = 0;i<m;i++){
*(arr2+i)=i+m;
}
}
void array_concat(void *arr1, void *arr2, void *arr3, int n, int m,int size){
for(int i=0;i<n;i++){
memcpy((arr3+i),(arr1+i),size);
}
for(int i=0;i<m;i++){
memcpy((arr3+i+n),(arr2+i),size);
}
}
int main(int argc, char const *argv[])
{
int n=10;
int m=10;
float f1[n];
float f2[m];
array_float_fill(f1,f2,n,m);
printf("%f",*(f1+3));
float* f3 = malloc((n+m) * sizeof(float));
array_concat(f1,f2,f3,n,m,sizeof(float));
printf("%f",*(f3+3));
return 0;
}
我尝试使用for-loop 将每个元素复制到新数组中,因为该函数只会给我一个指向数组开头的指针。不知道为什么它不起作用。任何帮助和提示将不胜感激
【问题讨论】:
-
你需要
#include <string.h>来获取memcpy的声明。
标签: c arrays function concatenation memcpy