我有一個二維數組組織爲傳遞數組類函數C++
float vertices[3][3]
在我的計劃中的一個迭代循環,我看到在我的調試器的陣列填滿像這樣:
vertices[0] = {-1, -1, 1}
vertices[1] = {-1, -.5, .5}
vertices[2] = {-.5, -1, .5}
然後我將三個頂點傳遞給我的三角形類。
Triangle *t = new Triangle(vertices[0], vertices[1], vertices[2]);
triangles.push_back(*t);
三角形構造函數被編碼爲這樣:
Triangle::Triangle(float *a, float *b, float *c)
{
memcpy(v1, a, sizeof(a));
memcpy(v2, b, sizeof(b));
memcpy(v3, c, sizeof(c));
}
我的調試器現在顯示
v1 = {-1, -431602080, -431602080}
v2 = {-1, -431602080, -431602080}
v3 = {-.5, -431602080, -431602080}
調試器還示出了A/B/C是僅1個元件長時間? 所以顯然只有數組的第一個元素被傳遞?
您還需要傳遞數組的大小! – CinCout