首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数组有关问题求解

2012-04-02 
数组问题求解static void draw_density ( void ){int i, j, k, m, nfloat x, y, z, h, cfloat vertices[

数组问题求解
static void draw_density ( void )
{
int i, j, k, m, n;
float x, y, z, h, c;
float vertices[8][3];
int faces[4][4];

h = 1.0f/N;

for ( i=0 ; i<=N ; i++ ) {
x = (i-0.5f)*h;
for ( j=0 ; j<=N ; j++ ) {
y = (j-0.5f)*h;
for ( k=0 ; k<=N ; k++ ) {
z = (k-0.5f)*h;
c = (int) ((1.0 - dens[IX(i, j, k)]) * 255);
if (c < 0)
c = 0;
vertices[8][3] = {
{(float)x - 0.5f, (float)y - 0.5f, (float)z + 0.5f},
{(float)x - 0.5f, (float)y + 0.5f, (float)z + 0.5f},
{(float)x + 0.5f, (float)y - 0.5f, (float)z + 0.5f},
{(float)x + 0.5f, (float)y + 0.5f, (float)z + 0.5f},
{(float)x - 0.5f, (float)y - 0.5f, (float)z - 0.5f},
{(float)x - 0.5f, (float)y + 0.5f, (float)z - 0.5f},
{(float)x + 0.5f, (float)y - 0.5f, (float)z - 0.5f},
{(float)x + 0.5f, (float)y + 0.5f, (float)z - 0.5f}
};

faces[4][4] = { { 1, 2, 6, 5 }, { 2, 3, 7, 6 },
{ 4, 5, 6, 7 }, { 0, 4, 7, 3 }, { 0, 1, 5, 4 },
{ 0, 3, 2, 1 } };

glBegin(GL_QUADS);
for (m = 0; m < 6; m++) {
glColor3f(c, c, c);
for (n = 0; n < 4; n++) {
glVertex3fv(vertices[faces[m][n]]);
}
}
glEnd ();
}
}
}
}

vs2010在红色的位置报错,提示应输入表达式

应该是数组赋值方式错了

请大家指点

[解决办法]
数组是不能这样赋值的。只能在声明的时候这样初始化。
[解决办法]
哇,第一次见这样的赋值,LZ英明...
赋值要在定义的时候就赋值!
例如:

C/C++ code
int faces[4][4] = { { 1, 2, 6, 5 }, { 2, 3, 7, 6 },{ 4, 5, 6, 7 },                  { 0, 4, 7, 3 }, { 0, 1, 5, 4 },{ 0, 3, 2, 1 } };
[解决办法]
C/C++ code
// 如果在前面已经有了声明(定义):int faces[4][4];// 那么下面的语句中的faces[i][j]就不再是一个数组了,而是数组中的一个元素了faces[4][4] = { { 1, 2, 6, 5 }, { 2, 3, 7, 6 },{ 4, 5, 6, 7 }, { 0, 4, 7, 3 }, { 0, 1, 5, 4 },{ 0, 3, 2, 1 } };// 所以,除非你在声明数组的同时,可以像上面那样赋值,否则,就必须用两层for循环或者与此类似的方式来//进行赋值了。
[解决办法]
“变量初始化”和“变量赋值”不是一回事!
“变量初始化”发生在编译时。
“变量赋值”发生在运行时。

热点排行