我有一个简单的功能:

    DoRead(double *writeArray){
//GblOutData is an array of length 80, where each element is 1
    writeArray=GblOutData;
//prints out 1
    printf("%f",writeArray[5]);
    return 0;
    }

当我调用DoRead()时会发生什么:
double data[80];
DoRead(data);
printf("%f",data[5]);
//prints out 0.000000 instead of 1

我不明白为什么会这样。有什么想法吗?

最佳答案

所有这些

writeArray=GblOutData;

dos是在函数DoRead()中更改变量writeArray的含义。当它返回时,外部变量数据没有改变。您想要复制内容,可能需要使用memcpy:
memcpy(writeArray, writeArray=GblOutData, 80*sizeof *writeArray);

关于c - 数组声明的行为非常奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8013923/

10-11 21:23