如何在C++函数中创建数组

How to make an array in a function in C++?

本文关键字:创建 数组 函数 C++      更新时间:2023-10-16

我试图输出的是庄家的卷子(数字应该存储在数组中(,但我不断收到错误,指出int是无效的类型DealerRoll(dealerRoll[3]);

#include <iostream>
#include <time.h>
#include <stdio.h>      
#include <stdlib.h>  
using namespace std;
//Dice Rolls
int DealerRoll(int dealerRoll[3]) {
    srand (time(NULL));
    for (int dealerCount = 0; dealerCount < 3; dealerCount++) {
        dealerRoll[dealerCount] = rand()% 6+1;
        cout << dealerRoll[dealerCount] << " ";
    }
    return dealerRoll[3];
}
int main() {
    int dealerRoll;
    cout << "Dealer's Roll: " << endl;
    DealerRoll(dealerRoll[3]);
    system ("pause");
    return 0;
}

虽然你可以在函数中创建数组,但std::vector提供了更好的灵活性,并为你处理资源管理。

如果数组大小是固定的,则可以改用std::array<int,3>

void DealerRoll(std::array<int,3>& dealerRoll) {
    srand (time(NULL));
    for (int dealerCount = 0; dealerCount < 3; dealerCount++) {
        dealerRoll[dealerCount] = rand()% 6+1;
        cout << dealerRoll[dealerCount] << " ";
    }
}
...
int main() {
    std::array<int,3> dealerRoll;
    cout << "Dealer's Roll: " << endl;
    DealerRoll(dealerRoll);
    ...
}

int dealerRoll;更改为int dealerRoll[3];

原因:您需要将数组传递给函数,但您要声明整数变量。

将行DealerRoll(dealerRoll[3]);更改为DealerRoll(dealerRoll);

原因:函数将数组作为输入,但您已经传递了数组的第 3 个位置(将分解为整数(而不是数组。

#include <iostream>
#include <time.h>
#include <stdio.h>      
#include <stdlib.h>  
using namespace std;
//Dice Rolls
void DealerRoll(int* dealerRoll)   //retrieving array in pointer
{
    srand (time(NULL));
    for (int dealerCount = 0; dealerCount < 3; dealerCount++)
    {
    dealerRoll[dealerCount] = rand()% 6+1;
    cout << dealerRoll[dealerCount] << " ";
    }
}
int main()
{
    int dealerRoll[3];    //syntax for creating array
    cout << "Dealer's Roll: " << endl;
    DealerRoll(dealerRoll);  //passing address of array in function
    //As Values are passed by address, values retained in array
    cout<<"nValues in Dealer's Roll : "<<endl;
    for (int dealerCount = 0; dealerCount < 3; dealerCount++)
    {
        cout << dealerRoll[dealerCount] << " "; 
    }
system ("pause");
return 0;
}