我正在使用C语言编写一个程序来解析文本文件,以便将值放入一个大矩阵(1000x1000及更大)中。
程序从文件中取一行,解析整数和双精度并将它们存储到double类型的数组中。该数组看起来像:
cleaningCharArray [] = {1,2,3,4,588.235300,-629.461300,33.333300,7.892700};
我现在正在尝试使用这个双精度数组来创建索引值(1到4)的整数数组和实际值的双数组(小数值。)
int * getIndexVector(const double * cleanedCharArray)
{
#define vectorSize (sizeof(cleanedCharArray) / 2)
static int idxVector[vectorSize];
idxVector[0] = cleanedCharArray[0];
idxVector[1] = cleanedCharArray[1];
idxVector[2] = cleanedCharArray[2];
idxVector[3] = cleanedCharArray[3];
return idxVector;
}
我创建了一个循环,将每个索引处的每个值打印到终端。在cleaningCharArray上运行上面的函数后,idxVector和cleaningCharArray的值如下:
idxVector = 1,2,3,4 cleaningCharArray = 1,2,3,4,0.0000,0.0000,33.3333,7.8927
我尝试在每个分配行之间(每个idxVector [i] = cleaningCharArray [i]之间)打印cleaningCharArray的值,结果显示该行:
idxVector[1] = cleanedCharArray[1];
负责设置idxVector [1] = 2和cleaningCharArray [4] = 0.00。这一行:
idxVector[3] = cleanedCharArray[3];
负责设置idxVector [3] = 4和cleaningCharArray [5] = 0.00。
这个“bug”使我的cleaningCharArray完全没用,因为这些值现已关闭。
我理解需要对代码执行此操作的具体解释,但我找不到原因。
为什么索引数组的值会在甚至不使用的索引处发生变化?
有没有办法让值不变?
谢谢,
赖安