C++ for循环报expression must have pointer-to-object type错误原因咨询
报错原因分析
expression must have pointer-to-object type but it has type "int"
该编译报错的触发原因如下:
- 数组类型定义不匹配:你声明的
v是int v[100],属于一维int数组。执行v[i]操作后得到的结果是单个int类型的数值,而C++中只有数组、指针类型支持[]下标运算符操作,你对int类型的v[i]直接再加[j]做二次下标访问属于语法非法操作,这就是报错的直接原因。 - 输入逻辑存在冗余问题:当前的双层循环输入逻辑中,内层j循环会对同一个
v[i]重复赋值m次,最终每个v[i]只会保存对应内层循环最后一次输入的数值,之前的输入都会被覆盖,即使不存在下标访问错误,也无法正常存储二维表格类数据。
如果需要实现n行m列的二维数据存储与遍历,可参考如下修正代码:
int n, m, v[100][100]; // 改为二维数组,注意数组尺寸需大于实际输入的n、m值 cin >> n >> m; // 输入逻辑对应改为对二维数组的单个元素赋值 for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cin >> v[i][j]; } } // 遍历访问逻辑可正常执行 for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ int nr = v[i][j]; // 此处添加自定义处理逻辑 } }
内容的提问来源于stack exchange,提问作者Dragos Cosmin
相关产品推荐
相关产品推荐

