如何使用函数更改数组? 我对C++很陌生,而且我遇到过一个问题。 我想写一个二十一点游戏。我有一个大小为52的数组,类型为“char”,有不同的牌,我想洗牌。我不知道怎么做,但这不是问题所在。我创建了一个名为“ShuffleDeck”的函数,但它不起作用,表示它不能返回数组。我也不能引用数组。我该怎么做?这是我要说的代码部分 void ShuffleDeck(bool &rgCards[]) { for (int i = 1; i < 52; ++i) { //something } return rgCards[]; } void ShuffleDeck(bool&rgCards[]){ 对于(int i=1;i数据类型(&)[n] < /代码>,其中代码> n>代码>是数组中元素的数量。将您的函数更改为 void ShuffleDeck( char (&rgCards)[52] ) { ... }

如何使用函数更改数组? 我对C++很陌生,而且我遇到过一个问题。 我想写一个二十一点游戏。我有一个大小为52的数组,类型为“char”,有不同的牌,我想洗牌。我不知道怎么做,但这不是问题所在。我创建了一个名为“ShuffleDeck”的函数,但它不起作用,表示它不能返回数组。我也不能引用数组。我该怎么做?这是我要说的代码部分 void ShuffleDeck(bool &rgCards[]) { for (int i = 1; i < 52; ++i) { //something } return rgCards[]; } void ShuffleDeck(bool&rgCards[]){ 对于(int i=1;i数据类型(&)[n] < /代码>,其中代码> n>代码>是数组中元素的数量。将您的函数更改为 void ShuffleDeck( char (&rgCards)[52] ) { ... },c++,C++,非常感谢您的帮助。您可以使用std::vector并将其中的值混洗。最好通过引用函数传递它,并处理原始向量 从您的代码片段中,并不完全清楚您希望它做什么-您通过引用传递一个bool数组,但将其作为int返回,语法为rgCards[],这在该上下文中毫无意义 编辑:根据Fred的评论-您可以使用。从您提供的代码片段来看,您似乎试图将对数组的引用传递到ShuffleDeck()。数组引用的C++语法是“代码>数据类型(&)[n] < /代码>,其中代码> n>代码>是数组中元素的数量。将您的函数更改

非常感谢您的帮助。

您可以使用
std::vector
并将其中的值混洗。最好通过引用函数传递它,并处理原始向量

从您的代码片段中,并不完全清楚您希望它做什么-您通过引用传递一个
bool
数组,但将其作为
int
返回,语法为
rgCards[]
,这在该上下文中毫无意义


编辑:根据Fred的评论-您可以使用。

从您提供的代码片段来看,您似乎试图将对数组的引用传递到
ShuffleDeck()
。数组引用的C++语法是“代码>数据类型(&)[n] < /代码>,其中代码> n>代码>是数组中元素的数量。将您的函数更改为

void ShuffleDeck( char (&rgCards)[52] ) { ... }
您可以将其设置为模板函数,并让编译器推断数组长度

template<size_t N>
void ShuffleDeck( char (&rgCards)[N] ) { ... }
模板
void ShuffleDeck(字符(&rgCards)[N]){…}

最后,由于您使用C++,您可能需要切换到使用容器类,如“代码> STD::Load < /Cl>”或“代码> STD::vector < /Class”,而不是C样式数组。

以保持代码与您编写的代码最相似,我只做一些小的修改:注意,

&
不是必需的,索引应该从0开始

void ShuffleDeck(bool rgCards[]) {
    for (int i = 0; i < 52; ++i) {
        //something
    }
}
void ShuffleDeck(bool rgCards[]){
对于(int i=0;i<52;++i){
//某物
}
}
您对rgCards[i]所做的任何更改都将在调用ShuffleDeck后可用

您也可以这样做

void shuffle(int* deck, int size)
{
  for(int i =0; i < size; i++)
  {
    deck[i] = i;
  }
}

最清洁的解决方案,国际海事组织:

class Deck {
  char cards[52];
public:
  void Shuffle();
};

void Deck::Shuffle()
{
  // I can change cards here because both cards and Shuffle are members of Deck
}

或者只在一个
std::vector上使用,而不是滚动你自己的洗牌功能。@fredrarson cool,里面的所有东西继续让我惊讶。:)是的,嗯,我真的不知道我要去哪里,但我不想在这里发布任何代码。谢谢你的帮助!
class Deck {
  char cards[52];
public:
  void Shuffle();
};

void Deck::Shuffle()
{
  // I can change cards here because both cards and Shuffle are members of Deck
}