【发布时间】:2015-06-01 14:32:02
【问题描述】:
我正在尝试复制到 C 中的动态分配数组(源数组可能是动态分配的,也可能不是动态分配的。数组的第一个元素被正确复制,但其余的不是。谁能告诉我做错了吗?
这里是我调用方法的地方:
vec3 tempVel = {
(float)rand()/(float)RAND_MAX * (2.0f * INIT_VELOCITY_DIMENSION_MAGNITUDE) - INIT_VELOCITY_DIMENSION_MAGNITUDE,
(float)rand()/(float)RAND_MAX * (2.0f * INIT_VELOCITY_DIMENSION_MAGNITUDE) - INIT_VELOCITY_DIMENSION_MAGNITUDE,
(float)rand()/(float)RAND_MAX * (2.0f * INIT_VELOCITY_DIMENSION_MAGNITUDE) - INIT_VELOCITY_DIMENSION_MAGNITUDE
};
thisBoid->velocity = copyArrays2(&tempVel, 3);
以及方法:
vec3* copyArrays2(vec3 *src, int len){
vec3 *tempArray = (vec3*)malloc(len*sizeof(vec3));
for(int i=0; i<len; i++){
*tempArray[i] = *src[i];
}
return tempArray;
}
在复制之前打印 'tempVel' 的值,之后打印 'thisBoid->velocity' 的值会得到以下输出:
{0.895216, -0.107424, 0.532019}
{0.895216, 10.000000, 0.500000}
【问题讨论】:
-
编辑:无论 tempVel 的内容如何,总是复制 10 和 .5
-
你的“数组”只有一个元素...
-
这无法编译,您要取消引用
vec3... @iharob ..."please" 吗? :) -
tempVel?它有 3 个用逗号分隔的浮点数。一个 vec3 对象本来就有 3 个元素
标签: c arrays dynamic copy allocation