在我的程序中,我正在处理一个函数,该函数获取用户输入的行,列和新值,它将替换设置为常量的相等维度的2d数组的相同索引中的旧值int 5.(它是一个正方形)这是我试图做的事情:
cout << "Input the row, the column, and new value: " << endl;
cin >> changeR >> changeC >> newval;
Sqarr[changeR, changeC] = newval;
我收到一条错误消息,说我的表达式必须是可修改的值。
我的策略错了吗?我不能这样做二维阵列吗?
答案 0 :(得分:2)
您只是使用了错误的语法。虽然你所做的对其他语言有用,但在C / C ++中它有不同的含义:
Sqarr[changeR, changeC] = newval;
不会像其他语言那样做。你想要的是:
Sqarr[changeR][changeC] = newval;
top语句使用C的“逗号”运算符,该运算符计算第一个值(changeR
),然后计算第二个值(changeC
)并简单地返回第二个值。这只会将Sqarr
的行编入索引,而您无法将newval
分配给。{/ p>
最下面一行说“获取changeR
行Sqarr
,然后将changeC
列编入索引。”
答案 1 :(得分:0)
语法不正确。 必须是:
array[row][col] = value;
我会检查数组索引。
cin >> row >> col >> new_value;
if((row > 0 && row < MAX_ROWS_COUNT) && (col > 0 && col < MAX_COLS_COUNT))
{
array[row][col] = new_value;
}