初始化的多维数组,用声明初始化和声明后初始化有什么区别
Multidimensional Arrays initialized,What is differnce of Initialize with declarations and Initialize after declaration?
多维数组初始化有什么区别?
这是"最长公共子序列"问题。
string str1, str2;
getline(cin, str1);
getline(cin, str2);
int alphaCount[26] = { 0, };
int str1Len = str1.length();
int str2Len = str2.length();
int** arr = new int* [str1Len+1];
for (int i = 0; i < str1Len+1; i++)
{
arr[i] = new int[str2Len+1];
//Method One
for (int j = 0; j < str2Len+1; j++)
{
arr[i][j] = 0;
}
}
for (int i = 0; i < str1Len; i++)
{
for (int j = 0; j < str2Len; j++)
{
int y = i + 1;
int x = j + 1;
if (str1[i] == str2[j])
arr[y][x] = arr[y - 1][x - 1] + 1;
else
{
if (arr[y][x - 1] > arr[y - 1][x])// using uninitialized memory ERROR
arr[y][x] = arr[y][x - 1];
else
arr[y][x] = arr[y - 1][x];
}
}
}
cout << arr[str1.length()][str2.length()] << "n";
// Method Two
// Not Error
for (int i = 0; i < str1Len + 1; i++)
{
for (int j = 0; j < str2Len + 1; j++)
{
arr[i][j] = 0;
}
}
// Method Three
//global valiable, Not Error
int arr[1001][1001];
为什么方法一有错误消息警告 C6001:使用未初始化的内存 。
方法1 和方法 2 有什么区别?
如果列表中的元素多于数字,C++用零填充列表。因此,这个静态数组:
int alphaCount[26] = { 0, };
将把它的所有成员初始化为零(明确地将第一个元素设置为零,并让其他元素自动初始化(。
这:
int** arr = new int* [str1Len+1];
for (int i = 0; i < str1Len+1; i++)
{
arr[i] = new int[str2Len+1];
for (int j = 0; j < str2Len+1; j++)
{
arr[i][j] = 0;
}
}
还将数组的所有元素初始化为 0。但是,在这种情况下,数组是 2D 数组,并且是动态分配的(之后不要忘记释放它(。通常,您应该检查新的是否成功。
注意:C++中的静态数组与动态数组。
第二种方法将使用双精度 for 循环将 2D 数组的所有元素初始化为零。
第三种方法将全局数组的元素初始化为零,因为为什么全局变量和静态变量初始化为默认值?
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 在函数内部的声明中初始化数组,并在外部使用它
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 构造函数/函数声明参数列表中的统一初始化
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 强制使用默认构造函数对成员进行未初始化的声明
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 初始化声明符是 prvalue 表达式吗?
- 智能指针可以单独向前声明和初始化吗?
- 在C++中,如果成员引用在其声明中初始化,为什么需要存储空间?
- C++ 通过函数声明后初始化向量
- C++声明变量时自动类型推断而不初始化
- C++ 警告:在一个声明中将截断从双精度初始化为浮点数,但在另一个声明中则不初始化
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法
- public:静态常量字符串声明/初始化问题
- 如何在成员初始化列表中声明共享指针
- c++:何时初始化声明的变量而不将其分配给任何值
- C++ 非整型模板 Const 初始化 预期在类名之前使用初始化声明符
- C++ 模板类编译错误:令牌之前'<'预期的初始化声明器