我有一个简单的功能:
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;
}
Run Code Online (Sandbox Code Playgroud)
当我调用DoRead()时会发生什么:
double data[80];
DoRead(data);
printf("%f",data[5]);
//prints out 0.000000 instead of 1
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会这样.有任何想法吗?
一切都行
writeArray=GblOutData;
Run Code Online (Sandbox Code Playgroud)
确实是在函数DoRead()中改变变量writeArray的含义.返回时,外部变量数据没有改变.您想复制内容,可能使用memcpy:
memcpy(writeArray, writeArray=GblOutData, 80*sizeof *writeArray);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |