C:为什么我的初始化程序无效?

L'u*_*imo 0 c vector

我必须做一个返回两个向量的点积的函数.这是他的代码:

float res;
float v1[3];
float v2[3];

v1[0] = 3;
v1[1] = 2;
v1[2] = 0;
v2[0] = 2;
v2[1] = 5;
v2[2] = 0;


float dotProd(float *vec1, float *vec2) {
    return vec1[0]*vec2[0] + vec1[1]*vec2[1] + vec1[2]*vec2[2];
}

res = dotProd(v1, v2)
Run Code Online (Sandbox Code Playgroud)

我认为函数是正确的,问题是当我定义向量的值时,我得到无效的初始化器错误.

我错过了什么?

dbu*_*ush 7

你试图做的不是初始化而是分配.前者在定义变量时完成,而后者在稍后作为可执行语句完成.您收到错误,因为在函数外部不允许使用可执行语句.

您需要在定义数组时使用初始化程序:

float v1[3] = {3, 2, 0};
float v2[3] = {2, 5, 0};
Run Code Online (Sandbox Code Playgroud)