C++ 二维数组

c++ 2 dimensional array

本文关键字:二维数组 C++      更新时间:2023-10-16
int main ()
{
  int line,column,i,j;
  int sortir = 1;
  float nbr;
  cout << "The number of column :";
  cin >> column;
  cout << "The number of lines: ";
  cin >> line;
  float matrice [column][line];   //creating my 2d array
  for(i=0;i <= line;i++) //asking the user to put the numbers he wants in the 2d array
    for(j=0;j <= column;j++){
      cout << "Enter a number";
      cin >> nbr;
      matrice[j][i] = nbr;
    }
  system("PAUSE");
  return 0;
}

假设我做了一个行 = 1 和列 = 1 的数组,这使得(内存区域)[0,0] [0,1] [1,0] [1,1]。假设用户输入以下数字:

[0,0]=1
[0,1]=2
[1,0]=3
[1,1]=4

当我想向用户显示他在程序结束时输入的内容时:区域 [0][1] 和 [1][0] 显示相同的数字?

cout << matrice[0][0] = 1
cout << matrice[0][1] = 3 <-- why the f***
cout << matrice[1][0] = 3 <--His my for loop good?
cout << matrice[1][1] = 4

您正在越界访问数组。你循环访问了太多元素。你需要

for(i=0;i < line;i++) {
  for(j=0;j < column;j++){

除此之外,您的代码不符合标准C++,并且依赖于称为可变长度数组 (VLA) 的扩展。不能声明在运行时确定大小的自动存储阵列。

int i;
std::cin >> i;
int a[i];   // ERROR (non-standard VLA extension)
const int j = 42;
int b[j];   // OK
int c[42];  // OK

这不是有效的语法。 float matrice[column][line]是非法的。 C++中不能有可变大小的数组。 编译器正在提供诸如扩展之类的扩展。