为什么索引数组以设置另一个数组的值会影响索引数组值?

时间:2017-09-29 20:20:52

标签: arrays indexing

我正在使用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完全没用,因为这些值现已关闭。

我理解需要对代码执行此操作的具体解释,但我找不到原因。

为什么索引数组的值会在甚至不使用的索引处发生变化?

有没有办法让值不变?

谢谢,

赖安

0 个答案:

没有答案