这是:
pattern = @"\*$"
好的我原来的问题是它总是崩溃,现在打印" @" ???
答案 0 :(得分:3)
C ++数组基于0。
players[1]
正在访问数组范围之外的位置。
您需要:players[0]
。
答案 1 :(得分:0)
肯定会崩溃以下一行:
players[1]=players[1]+x+y;
由于players
数组的大小为1,因此它只有索引 0 。在上面一行中,它尝试访问索引 1 。看一下Buffer Overflow和数组索引越界。
答案 2 :(得分:0)
cout << ("Your score is" + players[1]) << endl;
在这里,您尝试使用直接字符串连接,但是您无法将字符串文字与这样的整数连接起来。你最终做了指针运算,这绝对不是你想要的。
您应该使用cout
的内置格式:
cout << "Your score is" << players[1] << endl;
您的下一个问题是players
未正确声明;一个数组不能有运行时边界,numplayers
(尽管只有一个初始值)最终是一个&#34;运行时&#34;变量。如果数组的大小稍后会改变,那么使用std::vector
会更好;否则numplayers
成为constexpr
。
你的最后一个问题是,如果数组声明 有效,你就试图访问单元素数组的第二个元素!第一个元素是players[0]
,而不是players[1]
。
答案 3 :(得分:0)
有很多事情你做得不好。
int players[numplayers]
。在C ++中,我们可以创建固定大小的数组,即int players[10]
或使用指针到数组,以便动态分配内存,例如: int* players = new int[numplayers]
。这将分配一个大小为numplayers
的数组,一个名为player的 int指针指向它。我们可以将此指针用作普通数组,例如打印第一个数组索引写为player[0]
或其他语法为*(player + 0)
。请记住在程序结束时删除此动态分配的内存,即delete[] player
。这是循环:
for(int i = 0 ; i < numplayers ; i++){
player[i]=0;
//another syntax is : *(player + i) = 0;
}
std::cout
语句中那样进行连接。像这样:
cout << "Your score is" << players[0] << endl;
在C ++中,数组始终以索引0开头,因此在这种情况下第一个索引将为0。所以如果你的程序是这样的话你的程序会很好用:
int numplayers = 1;
int* players = new int[numplayers];
int x = 0, y = 0;
srand(time(0));
x = (rand() % 6 + 1);
y = (rand() % 6 + 1);
players[0] = 0;
players[0] = players[0] + x + y;
cout << "Your score is" << players[0] << endl;
delete[] players;
return 0;