int *val r,c;
cout << "enter dimensions";
cin >> r >> c;
val = new int[r*c];
for (int i = 0; i < r; i++)
{
cout << “\n Enter element in row “ << i + 1 << “ : “;
for (int j=0; j < c; j++)
cin >> arr [ i * c + j];
}
在上面的代码中,c
在表达式arr[i*c+j]
中代表什么?但是在普通的二维数组中,我们使用arr[i][j]
,val = new int[r*c]
的含义是什么?在创建动态数组时,我认为[r*c]
是分配给变量var或其他变量的列中数组行的总大小吗?如果我没有使用c
,则会出现错误,但是当我使用c
时,不会出现错误。请告诉我为什么我们在c
中使用arr[i*c+j]
。我读过某个地方的c
表示最大列数。
int *p = new int;
if(!p)
{
cout << "memory allocation";
}
此外,在上述代码段中,如果条件为true
,如何进行内存分配?
答案 0 :(得分:1)
提示:
这两个代码在做同一件事。
代码1:
const int N = 3;
int arr[N][N];
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
arr[i][j] = SOMETHING;
}
}
代码2:
const int N = 3;
int arr[N*N];
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
arr[i * N + j] = SOMETHING;
}
}
在第一个代码中,使用了二维数组的经典语法。在第二个代码中,一维数组用于表示二维数组。