我收到以下C ++错误:
array must be initialized with a brace enclosed initializer
从这一系列的C ++
int cipher[Array_size][Array_size];
这是什么问题?错误是什么意思?以下是完整代码:
string decryption(string todecrypt)
{
int cipher[Array_size][Array_size] = 0;
string ciphercode = todecrypt.substr(0,3);
todecrypt.erase(0,3);
decodecipher(ciphercode,cipher);
string decrypted = "";
while(todecrypt.length()>0)
{
string unit_decrypt = todecrypt.substr(0,Array_size);
todecrypt.erase(0,Array_size);
int tomultiply[Array_size]=0;
for(int i = 0; i < Array_size; i++)
{
tomultiply[i] = int(unit_encrypt.substr(0,1));
unit_encrypt.erase(0,1);
}
for(int i = 0; i < Array_size; i++)
{
int resultchar = 0;
for(int j = 0; j<Array_size; j++)
{
resultchar += tomultiply[j]*cipher[i][j];
}
decrypted += char((resultchar%229)-26);
}
}
return decrypted;
}
答案 0 :(得分:22)
静态初始化数组的语法使用花括号,如下所示:
int array[10] = { 0 };
这将对数组进行零初始化。
对于多维数组,您需要嵌套的花括号,如下所示:
int cipher[Array_size][Array_size]= { { 0 } };
请注意,Array_size
必须是编译时常量才能使其正常工作。如果在编译时不知道Array_size
,则必须使用动态初始化。 (最好是std::vector
)。
答案 1 :(得分:4)
您不能像这样将数组初始化为'0'
int cipher[Array_size][Array_size]=0;
您可以按照以下方式初始化数组中的所有值:
// When using different values
int a[3] = {10,20,30};
// When using the same value for all members
int a[3] = {0};
// When using same value for all members in a 2D array
int a[Array_size][Array_size] = { { 0 } };
或者您需要在声明后初始化值。例如,如果要将所有值初始化为0,则可以执行以下操作:
for (int i = 0; i < Array_size; i++ ) {
a[i] = 0;
}
答案 2 :(得分:0)
您不能像这样初始化数组:
int cipher[Array_size][Array_size]=0;
2D数组的语法是:
int cipher[Array_size][Array_size]={{0}};
请注意初始化语句右侧的花括号。
对于1D数组:
int tomultiply[Array_size]={0};