C:两个阵列的划分

时间:2017-09-25 22:08:06

标签: c arrays

我有两个int类型的数组。每个长约17901个元素。一个代表高度,另一个代表空速。我想划分两个数组(这个除法将产生马赫数)。我该怎么做?

这是我目前正在使用的代码:

for (i = 0; i < ((size / 2) + 1); i++) {    // size/2 here is 17901
    machNumber[i] = (ASarray[i] / soundspeed[i]); 
}

2 个答案:

答案 0 :(得分:1)

((size/2)+1替换为计算出的大小sizeof(ASarray)/sizeof(*ASarray)

这样,循环就会毫无疑问。当然,必须静态定义ASarray的大小(内存不得使用malloc分配)。

for(i = 0; i < sizeof(ASarray) / sizeof(*ASarray); i++) {
  machNumber[i] = (ASarray[i] / soundspeed[i]);
}

答案 1 :(得分:0)

大小的一半不能正确计算元素的数量:您应该将数组的大小除以其元素的大小(以字节为单位)。此外,如果machNumber是浮点类型且ASarraysoundspeed都不是,则需要使用强制转换来计算正确的Mach值:

for (size_t i = 0; i < sizeof(ASarray) / sizeof(ASarray[i]); i++) {
    machNumber[i] = (double)ASarray[i] / soundspeed[i]; 
}