如何将二维数组的一部分复制到一维数组中?

时间:2013-04-04 14:44:54

标签: c arrays malloc

此代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int arr[3][3] = {
                    1,2,3,
                    4,5,6,
                    7,8,9
                };


int *arry = (int*)malloc(3 * sizeof(int));
*arry = memcpy(arry, arr[1], 3 *sizeof(int));

 int t;
 for(t = 0 ; t < 3 ; t++)
    {
        printf("\n");
        printf("%d \t", arry[t]);
    }
}

正在产生此输出:
   
7280624
    5
    6
    进程返回3(0x3)执行时间:0.011 s
    按任意键继续。

为什么不正确复制第一个值?

2 个答案:

答案 0 :(得分:3)

正在复制第一个值,但是

*arry = memcpy(arry, arr[1], 3 *sizeof(int));

您使用memcpy的返回值覆盖它。

致电

memcpy(arry, arr[1], 3 *sizeof(int));

或者如果要检查它,则将返回值分配给另一个变量(无意义,因为memcpy返回其第一个参数)。

答案 1 :(得分:0)

memcpy返回void *。

您将memcpy返回的void *分配给arry指向的值。在尝试读取该值时,这会给您一个奇怪的值。只需调用memcpy

即可
memcpy(arry, arr[1], 3 * sizeof(int));