数组下标和其他无效类型"int[int]"
Invalid types `int[int]' for array subscript and others
我一直得到的错误是:
无效类型int[int]' for array subscript
invalid conversion from
int'到int*'
initializing argument 1 of
void slideLeft
在while循环之前,我在int main()中声明了变量boardSize等于0。
以下是一些代码供你们查看:
void slideLeft(int board[], int i, int rowBeginIndex)
{
while((board[i - 1] == 0) && (i > rowBeginIndex))
{
board[i - 1] = board[i];
board[i] = 0;
i--;
}
}
在int main()中:
while(GetInput(direction) != 0)
{
cout << "Your move: nn";
cin >> direction;
if(direction == 'a')
{
for(row=0; row<RowSize; row++)
{
for(col=0; col<RowSize; col++)
{
current = row*RowSize + col;
if(boardSize[current] != 0)
{
slideLeft(boardSize, current, row*RowSize);
}
}
}
}
类型不匹配的原因是boardSize只是一个整数(如您所说设置为0),但您的slideLeft函数正试图处理一个数组。把木板本身传进去,而不是大小。
void slideLeft(int board[],int i,int rowBeginIndex)-这种类型的声明在C++中不起作用。如果您有一个int数组,将其作为函数参数的最佳方法是将其作为int*。此外,你需要传递数组的大小,这样你的函数就不会覆盖不属于它的数据
void slideLeft(int *board, int boardSize, int i, int rowBeginIndex);
可能会出现一个问题,即如何将数组传递给此函数。以下是您的操作方法:
int array[10];
slideLeft(&array, sizeof(array)/sizeof(int), i, rowBeginIndex);
如果你按照我上面的方法声明一个数组,那么为了得到数组中元素的数量,你将数组的完整大小除以数组类型(int)的元素的大小。
希望这能有所帮助。
相关文章:
- 为什么 int 类型的枚举类值不能用作 int
- 如何将文本文件的特定行读取到 int 类型的数组中C++?
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 比较两个整数在C++中与未知 int 类型的相等性
- 二进制'operator+' 'int*'和'int*'类型的无效操作数
- 使用元编程选择 int 类型,将生成错误
- 从数组创建 Mat 时,'cv::Mat' 和 'int' 类型不兼容
- 复制初始化 - 从 'int' 类型转换为非标量类型
- 初始化cv :: mat ::具有int类型的定义大小的人
- 处理代码重新定义int类型(uint16_t,int16_t等),并不喜欢它
- 为什么没有"int"类型声明时输出不同?
- 在大型程序中将长变量更改为 int 类型
- 无法将 int 类型转换为时间类型(我的类类型)
- C++:无法在按位函数后将 int 类型设置为非标量
- 无法分配给INT类型的成员[10]
- C++ cin 将字符串读取到 int 类型中返回 0
- 为什么 decltype((i)) 是引用类型,而 decltype(i+0) 是 int 类型
- 使用4用于循环的4矩阵上的数组下标的“ int [int]类型”
- std::is_arithmetic 为通用 lambda 中的 int 类型返回 false:未定义的行为?
- 正在施放带有“ Int”类型的临时性