生成一个整数数组
generating an integer array
我是c++的新手,我想写一个程序来生成一个整数数组。总是在
行出现错误test[i][j]=i;
invalid types 'int[int]' for array
谁能告诉我这里出了什么问题?提前谢谢。
int main()
{
int rows;
int cols;
cin>>rows>>cols;
int test[rows][cols];
get_test(rows,cols,&test[0][0]);
cout<<test[1][1]<<endl;
return 0;
}
int get_test(int rows,int cols,int *test)
{
int h=rows;
int w=cols;
int i=0,j=0;
for(i=0;i<h;i++)
{
for (j=0;j<w;j++)
{
test[i][j]=i;
}
}
return 0;
}
int test[rows][cols];
与非编译时间值是一个可变长度数组,这是一些编译器的可能扩展。
首选std::vector
代替:
int get_test(std::vector<std::vector<int>>& test)
{
for (int i = 0;i != test.size(); ++i)
{
for (int j = 0; j != test[i].size(); ++j)
{
test[i][j] = i;
}
}
return 0;
}
int main()
{
int rows;
int cols;
cin>>rows>>cols;
std::vector<std::vector<int>> test(rows, std::vector<int>(cols));
get_test(test);
cout << test[1][1] << endl;
return 0;
}
你的数组类型是错误的,你想要的是:
int get_test(int rows,int cols,int **test)
这个问题必须处理你的数组声明:
int rows;
int cols;
cin>>rows>>cols;
int test[rows][cols];
编译器在编译时不知道整型的值。因此,它不知道在内存中分配多少空间。
尝试分配一堆空间,比您认为可能需要的更多,例如:
int rows = 100;
int cols = 100;
int test[rows][cols] //assumes a maximum of size 100 for each row & col
或者使用动态数组:
int **test = new int *[rows];
for(int i = 0; i < rows; i++)
test[i] = new int[cols];
相关文章:
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 当我们从/tp地址中添加/减去一个整数时会发生什么
- 如何将一个数组值合并为一个整数c++
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 我可以将迭代器递增一个整数吗?
- 有没有办法生成一个包含平方的序列,这些平方加起来就是一个整数平方?
- 为什么将两个浮点数相加会得到一个整数C++?
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 给枚举一个整数,并在 C++ 中将其相关值作为字符串获取
- 按升序输出整数时,将最后一个整数放在新行上
- 编写一个程序,提示用户输入一个整数,然后输出数字的单个数字和数字的总和
- 给定一个整数 N>0,区间 [0, 2^N) 中有多少个整数正好有 N-1 个设置位?编写一个返回正确答案的简短函数
- 给定一个整数,将其表示为平方和
- c++interpret_cast是一个整数
- 以最少的步骤将给定整数转换为另一个整数
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- 我需要将字符串(例如 A5)转换为一个字符串 (A) 和一个整数 (5)
- 如何交替从文件中获取一行数据和一个整数?
- 如何让这个C++代码从用户那里读取五个整数而不是一个整数?