我有一个非常简单的函数来输入值。但我得到一个有线输出。我得到的值与我插入的值不同?我做错了什么?
#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];
}
}
答案 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
您将从阅读这些文章中受益: