【问题标题】:How to make an array in a function in C++?如何在 C++ 中的函数中创建数组?
【发布时间】:2017-09-03 12:40:44
【问题描述】:

我要输出的是庄家的点数(数字应该存储在数组中),但我不断收到错误消息,指出 intDealerRoll(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;
}

【问题讨论】:

  • return dealerRoll[3]; 正在返回数组外的 int,dealerRoll 中最大的索引元素是 dealerRoll[2]

标签: c++ arrays function random


【解决方案1】:

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

如果数组大小是固定的,您可以使用std::array&lt;int,3&gt; 代替:

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);
    ...
}

【讨论】:

    【解决方案2】:

    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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多