C语言 使可变变量后标量初始化器中的多余元素

xyhw6mcr  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(79)

我得到的错误“超额元素在标量初始化”当我试图使初始化数据,所以我可以改变数据时,它需要我改变,因为之前我的数据只是定义。但是当我初始化的时候,错误就出现了。我真的不明白这个错误。谁能解释一下,并给予我一个例子,如何使它工作?

int box[15][2] = {{0}};
    if (hand == "right"){
        box[15][2] = {{45,85}, {45, 75}, {45, 65}, {65, 85}, {65, 75}, {65, 65}, {25, 85}, {25, 75},
                           {25, 65}, {5, 85}, {5, 75}, {5, 65}, {85, 85}, {85, 75}, {85, 65}};
    }
ijxebb2r

ijxebb2r1#

1.只能在声明数组时使用初始化器列表来设置数组。不能将这样的列表赋给已声明的数组。

  1. box[15][2]不是对box的有效引用。(最后一个元素是box[14][1]
  2. hand == "right"没有任何意义。您正在比较一个char指针和一个指向常量字符串“right”的指针。即使hand被设置为常量字符串,也不能保证在比较中使用相同的指针。看起来你想比较hand"right"处的字符串,但这并没有做到。
    要设置数组box,一种方法是创建另一个你想要的常量数组,然后使用memcpy()将其复制到box上。
    要比较两个字符串,请使用strcmp()

相关问题