在C / C ++中将两个2-d数组初始化为零

时间:2016-12-29 09:13:23

标签: c++ arrays c++11

我的问题是我们可以使用"showusername"初始化二维数组。

根据initialize-large-two-dimensional-array-in-c中的最佳答案,

  

const initialState = { username: '', password: '', submit: false, //request: 'self', showselectfield: false }; export default function showUsername(state = initialState, action) { switch (action.type) { case "showusername": return ( Object.assign({},state ,{username:action.username,password:action.password}) ); default: return state } }
  这意味着:“将第一行中的第一列初始化为0,将所有其他项初始化为具有静态存储持续时间,即将它们设置为零。”

但是,检查int a[10][10] = {{0}}int array [ROW][COLUMN] = {0};,我没有找到支持此答案中提到的内容的任何官方记录。

此外,当我尝试使用以下解决方案解决C99 Standard 9899:TC3问题时,我确实遇到过这个问题。

C++11 Standard N4296

1 个答案:

答案 0 :(得分:4)

您的代码是C ++代码。关于C的其他问题和文件无关紧要; C和C ++是不同的语言。

在标准C ++中,必须在编译时知道数组维。 int dp[m + 1][n + 1]是一个错误(更不用说尝试初始化它了。)

可能您正在使用提供C ++ VLA作为非标准扩展的编译器。在这种情况下,您将受到特定编译器的支配,即代码的行为将是什么,以及={{0}}在其上的行为可能是什么。 C ++标准无济于事。

我的建议是避免使用非标准结构,以便保留标准文件提供的保证。