0

我正在尝试将 6x15 数组(地图)中的随机坐标设置为数字 3,但前提是该坐标的值仍为 0。(数组中的所有值最初设置为 0,ship num 是我要放置的值 3)

 25 int shipnum;
 26 int x;
 27 
 28 shipnum = 1;
 29 while(shipnum > 0)
 30 {
 31 if ((&x = map[rand_number(MAX_ROWS)][rand_number(MAX_COLS)]) == 0)
 32 {*x = 3;
 33 shipnum --;}
 34 }

但是,在编译过程中,我得到了错误

testarray3.c:31:9: error: lvalue required as left operand of assignment
testarray3.c:32:2: error: invalid type argument of unary ‘*’ (have ‘int’)

我不确定这些都在说什么......还是有更好的方法来做我想做的事情?

4

1 回答 1

1

如果x是一个 int 变量,&x它是地址,你不能改变它(第一个错误)。如果x是 int,*x则没有意义 - int 不是指针(第二个错误)。

你需要的是:

  • 创建x一个指向 int ( int *x;)的指针
  • 获取地址map[rand][rand]并将其存储在 x
  • 检查存储在该地址的值 ( *x)
  • 如果该值为 0,则更新该值。

您的代码将真正受益于不尝试将所有内容都塞进两行中。我实际上会避免整个 int 指针操作,它只会混淆您的代码。将随机坐标存储在两个变量中并使用正常的数组访问/分配。

于 2012-05-04T12:18:13.850 回答