在c ++中创建一个可变大小的数组

时间:2017-09-05 00:41:08

标签: c++ arrays

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

  

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

     

功能名称:read01

     

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

     

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

     

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

     

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]”,但我无法想出另一种方法。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我们可以定义数组的大小,如:

int Data[5]; //这里5是数组大小或

int Data[] = {1,2,3,4,5}; //在这个数量的元素中描述大小。

获取数组使用的大小(标准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;

希望它会帮助你..

答案 1 :(得分:1)

我相信答案是

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