如何使用函数更改数组? 我对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
}