此代码:
#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
按任意键继续。
为什么不正确复制第一个值?
答案 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));