多维阵列C
Multidimensional arrays c++
我是编程的完整初学者,我从C 开始。我现在在数组中,我正在尝试创建一个简单的十次表。我成功地使用了以下代码,但是我持怀疑态度,因为没有方括号,我做了正确的事情:
#include <iostream>
using namespace std;
int main() {
int product;
for(int i = 1; i < 11; ++i) {
for(int j = 1; j < 11; ++j) {
product = i*j;
cout << product << "t" << flush;
}
cout << endl;
}
return 0;
}
弄乱了一点点,我想到了以下内容:
#include <iostream>
using namespace std;
int main() {
int row = 11;
int col = 11;
int table[row][col];
for(row = 1; row < 11; ++row) {
for(col = 1; col < 11; ++col) {
table[row][col] = row*col;
cout << table[row][col] << "t" << flush;
}
cout << endl;
}
return 0;
}
都给出所需的输出,我的问题是为什么?我也很想知道第一个是否真的是数组,如果不是的话?关于我的基本代码写作的任何建议也将不胜感激。
第一个示例不使用数组。您正在打印10倍表,但您没有将该信息存储在程序中。这意味着在循环后,程序将不记得表的样子。
在第二个示例中,变量table
是多维数组。外观之后,您可以调用cout << table[4][6] << endl;
,并且将打印24
,而无需重新计算4*6是什么。这是因为您将信息保存在多维数组中。
(如上所述,编程中的数组从0开始,这意味着您应该使循环 for(row = 0; row <= 10; ++row) {
。这对数组中的第一个插槽不会被浪费。
也提到了评论,"向量"很好,但是如果您学习编程,则应该了解数组的工作原理,我建议不要进入矢量,直到您了解数组的基本知识为止(
都给出所需的输出,我的问题是为什么?
因为在两种情况下您都打印相同的值。
在第一种情况下,您将值保存在变量
中 product = i*j;
并打印变量
cout << product << "t" << flush;
在第二种情况下,您保存相同的值(row
具有与i
相同的值,col
的值与j
相同的值;因此row * col
在变量
i * j
相同的值( table[row][col] = row*col;
(这次是一个数组中的变量,取决于row
和col
(,您打印相同的变量
cout << table[row][col] << "t" << flush;
我也很好奇知道第一个是否真的是数组,如果不是的话?
您是说product
?
否:product
是一个简单的整数变量。
在product = i*j;
这是第二个示例中的table
变量是数组。或更好的是一系列数组。
区别在于,在Double的末尾,product
维护仅在table
维护 ALL 时,最后计算出的产品的值。
关于我的基本代码写作的任何建议也将不胜感激。
首先,正如某些程序员家伙所解释的那样,代码
int row = 11;
int col = 11;
int table[row][col];
不是正确的C ,因为您不能为数组尺寸使用非常数值。
您可以直接使用11
int table[11][11];
或者您可以将row
和col
定义为常量
int const row = 11;
int const col = 11;
int table[row][col];
或更好(从C 11开始(为constexpr
常数
constexpr int row { 11 };
constexpr int col { 11 };
int table[row][col];
第二:恕我直言,最好避免(在可能的情况下(using namespace std;
但要阐明名称空间;所以
std::cout << table[row][col] << "t" << std::flush;
这避免使用其他库时名称碰撞的风险。
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 位阵列上的快速AND运算
- 阵列必须使用大括号封闭的初始器进行初始化
- 没有从阵列<float>到阵列<int>的可行转换
- C++动态安全 2D 交错阵列
- 将平面阵列重塑为复杂的特征类型
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 库特<<恩德尔;不适用于打印 2D 阵列
- 数组类 阵列的打印输出
- 从较小的阵列到较大的阵列的元素级转换
- 仅在大型阵列上出现合并排序分段错误
- 从阵列C++中删除重复项
- 阵列的大小在C++中是否灵活?
- 反转阵列中的正序列
- 具有可变尺寸的 C++ 2D 阵列
- 二维阵列的动态分配
- 重新增长阵列时出错:写入时缓冲区溢出