数组值输出不正确

时间:2021-07-04 06:58:39

标签: c++

我有一个非常简单的函数来输入值。但我得到一个有线输出。我得到的值与我插入的值不同?我做错了什么?

#include <iostream>
using namespace std;

void testFunc(float arr[], int sizeOfArray);

int main() {
    int sizeOfArray = 4;
    float arrA[] = {};
    float arrB[] = {};
    
    cout << "1st array VALUES" << endl;
    testFunc(arrA, 4);
    cout << "A -> ";
    for(int i=0; i<sizeOfArray; i++){
        cout << arrA[i] << " | ";
    }
    cout << endl;
    
    cout << "2nd array VALUES" << endl;
    testFunc(arrB, 4);
    cout << endl << "B -> ";
    for(int i=0; i<sizeOfArray; i++){
        cout  << arrB[i] << " | ";
    }
    cout << endl;
    
    return 0;
}

void testFunc(float arr[], int sizeOfArray) {
    for(int i=0; i<sizeOfArray; i++){
        cout << "Insert val " << i+1 << ": ";
        cin >> arr[i];
    }
}

1 个答案:

答案 0 :(得分:0)

float arrA[] = {} 创建一个大小为 0 的浮点数组。当你迭代它时,你会在这里访问一个越界内存:

for(int i=0; i<sizeOfArray; i++);

您可以使用大括号 {...} 列出初始化数组而不指定数组的大小。但在这种情况下,大小是从列表中的元素推导出来的。您的列表为空。

例如:

float arr[] = {}; // Empty
float arr[4]; // Four elements, all default initialized
float arr[] = {3.14, 1.61}; // Two elements, specified values
float arr[4] = {3.14, 1.61}; // Four elements, last two are value initialized

您将从阅读这些文章中受益:

Why aren't variable-length arrays part of the C++ standard?

C++ Containers Library

相关问题