所以标题说明了一切。我只是通过将char variable[51]
更改为char variable[51][51]
来修复一段代码。我理解第一个版本意味着用户最多只能在变量中输入50个字符(假设我使用scanf来保存变量的输入)。但是,第二个版本在第二个版本中做了什么?谷歌搜索没有帮助,但是我假设在第二个版本中,第二个[]
意味着该变量最多可以包含50个不同的字符串。如果有人可以证实这一点,或者如果我错了就纠正我,那就太棒了。谢谢!
答案 0 :(得分:2)
表达式char variable[51][51];
表示variable
是一个包含51个数组的数组,每个数组包含51个字符。
答案 1 :(得分:1)
char variable[51] // 1-d character array
这是char
的数组。它可以包含51个字符。
char variable[51][51] // 2-d character array
这声明了51个数组的数组,可以包含51个字符。
如果您打算将它们用作字符串(或传递给字符串操作函数),那么 -
1。第一个可以包含最多50
个字符。
2。其中第二个字符串51
个字符串。{/ p>
注意 - 50
还剩一个空格。
答案 2 :(得分:1)
实际上,char var [51]将包含51个可以从0到50索引的字符。
现在如果添加第二组括号,则意味着char var [51] [51]现在可以表示51行乘51列的二维数组或方阵。
答案 3 :(得分:0)
char variable[51]
是一个包含51个字符的数组。
char variable[51][51]
是由51个字符组成的51个数组的数组(AKA是一个具有51行和51列的二维数组,但这并不完全正确)。这意味着数组中的每个元素本身就是一个数组。
您的编译器会按顺序存储它们,因此通过将用户输入到variable
,它将进入下一个元素(即下一个数组),以防它包含超过51个字符。当你打印variable
时,它似乎是正确的,虽然它实际上在数组中占用了超过1个元素。