0
我试图使用严格指针算术将数值从一个数组复制到另一个数组。这是我现在的代码:如何使用指针算术将数组中的值从一个数组复制到另一个数组
int *p;
int arraySize = 20;
int array[arraySize];
for (p = array; p< array+(sizeof(array)/sizeof(int)); p++){
int random = rand() % 200;
*p = random;
}
for (p = array; p< array+(sizeof(array)/sizeof(int)); p++){
printf("%d\t%x\n", *p, p);
}
//the code above works fine
printf("\n");
//grow the new array by one to insert value at end later
int array2[(arraySize+1)];
int *p2;
for(p2 = array2; p2< array2+(sizeof(array2)/sizeof(int)); p2++){
*(p2) = *(p);
}
for(p2 = array2; p2< array2+(sizeof(array2)/sizeof(int)); p2++){
printf("%d\t%x\n", *p2, p2);
}
但是,当我运行代码所有输出在每个内存位置是0。我做错了什么是防止值被复制过来?
“p”不会递增。 –
你的代码存在的问题是它改变了'p2',但它永远不会改变'p'。投票结束为错字。 – dasblinkenlight
做p ++给出的随机数与一些零混合在内存位置输出 – theplaid