【问题标题】:Creating an array with variable size in c++在 C++ 中创建一个可变大小的数组
【发布时间】:2017-09-05 00:41:07
【问题描述】:

我是 C++ 新手,我正在尝试创建一个函数来从数组中返回一个值。以下是作业说明:

在本练习中,您将创建一个函数来返回一个值 数组。如果索引超出范围,则返回 0。

函数名称:read01

参数:(数据、大小、索引)

1) data:一个常量 int 的数组

2) size:一个int,data中的槽数

3) index:一个int,在数据中想要的位置

返回值:一个int,数据中位置索引的值,或者0。

这是我目前尝试过的:

int read01(int data[], int size, int index){
    return data[index];
}

我知道如何执行“if”语句,所以这不是问题,但我感到困惑的是如何将 size 参数定义为 data[] 的大小。我知道您不能将“int size”像“int data[int size]”那样放入数据参数中,但我想不出另一种方法。任何帮助将不胜感激!

【问题讨论】:

  • 您应该将作业格式化为块引用,而不是代码(因为它不是代码)。
  • int data[], 已经正确
  • @M.M 如果不使用 size 参数来定义数据的大小,那么它的意义何在?
  • 您是在问如何通过大小设置数组的长度?像,大小 = 4,所以数组大小应该是长度 4?
  • @BrockMorrison 定义大小的“用户”不是您的功能。该数组是在您的函数之外创建的,并且您的函数会在其上接收一个视图,并且该视图的长度是 size 参数。您的函数不会创建或调整任何数组的大小,它会从已经存在的数组中读取值

标签: c++ arrays


【解决方案1】:

我们可以像这样定义数组的大小:

int Data[5]; //here 5 is size of array or

int Data[] = {1, 2, 3, 4, 5}; //In this number of elements describe the size.

获取数组大小使用(标准c方式:获取静态数组大小):

sizeof(Data) / sizeof(Data[0]);

你也可以试试Distance的方法来获取大小:

distance(begin(Data),end(Data));

编辑:你不能让数组用户定义,因为数组的大小需要在编译时编译。所以选项是你可以使用向量或指针。

但在 c++ 的情况下,使用 std::vector 而不是数组:

std::vector<int> vc;
vc.push_back(1);
vc.push_back(2);
vc.push_back(3);
std::cout << vc.size() << std::endl; // it will print 3(size of vector)

如果您想动态定义大小,请尝试以下操作:

int size;   
std::cin >> size;
int *A = new int[size];//dynamically assign memory to pointer A 
/*your code here*/
delete[] A;

希望对你有所帮助..

【讨论】:

  • 我看不出这如何回答 OP 的问题。
  • @user4581301 如果我得到他想定义数组大小的问题,或者我遗漏了什么
  • @Preet 我在问如何通过 size 参数设置数组的长度......所以当 size 参数定义为 size = 4 时,数组大小应该是 4。因为我在上面的 cmets 中所述,这被输入到单元测试中,我不知道在我的代码中将什么用作参数。
  • @BrockMorrison 您无法更改数组的大小,作业似乎也没有要求您这样做。我怀疑你应该测试index是否小于size(并在index处返回data中的值)或者如果index不小于size则返回0。还要注意“数据:常量 int 的数组”,因为您没有在 int read01(int data[], int size, int index) 中指定 data 为常量。阅读 const 关键字。
  • 抱歉错过了这个概念,实际上数组大小需要在编译时定义,所以你不能像@user4581301所说的那样改变它。如果你想这样做,你可以使用 std::vector
【解决方案2】:

我相信答案会是

#include <iostream>
int read01(const int data[], int size, int index) {
    if ( index >= size ) {
        return 0;
    } else {
        return data[ index ];
    }
}

【讨论】:

  • 这很完美!我让它在 if 语句之外返回 0 并且它一直给我一个错误。谢谢@mychsmit!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多