如何从C函数更改全局定义的变量

时间:2018-12-31 23:53:34

标签: c data-structures

我正在将结构作为变量传递给函数,该函数接受结构参数。

然后我要更改函数内部传递的结构的某些值,我想更改以相同名称定义的全局变量。

struct Neuron{

double Center[3];
char name;
int xCor;
int yCor;

};

struct Neuron Q;
struct Neuron W;
struct Neuron E;
struct Neuron R;


void Winning_NEURON(struct Neuron K){
for(int i=0; i<3; i++){

   K.Center[i] =  K.Center[i]+(learningParam*(inputArray[i]-K.Center[i]));
}

因此,如果我将神经元Q传递给函数,则可以正确计算数据,但Q神经元值不会改变,我怎么能全局改变而不仅仅是局部改变?

1 个答案:

答案 0 :(得分:3)

类型struct Neuron的参数通过值传递,这意味着该函数将接收结构的副本,而原始结构将保持不变。要通过引用传递,请将参数设置为指针(struct Neuron *),然后传递原始地址,例如&Q