使用指针查找数组中的值

时间:2016-06-24 13:44:06

标签: c++ arrays pointers

对于计算机科学课,我有以下任务。

给定一个包含128行和32列的二维二维数组。通过将列彼此相继放置在存储器中来存储阵列。完成以下函数,该函数返回给定指向数组第一个元素的指针的正确元素,以及一些列和行值。

#define N_COLUMNS 32
#define N_ROWS 128
static inline double get_element(const double *A, const int row, const int column)
{...
}

这是我到目前为止所做的,但我不认为这是正确的。

return *A + column * sizeof(double) + row * sizeof(double);

有人能帮助我吗?

3 个答案:

答案 0 :(得分:6)

根据我的理解,假设从零开始索引,可以通过使用指针算法获得所需的结果。

return *( A  + ( column * N_ROWS ) + row );

此处sizeof(double)不需要使用,因为A是适当的类型。添加到它将比{sum}提前sizeof(double)倍。

答案 1 :(得分:1)

尝试A + column_number * column_size + row_number

记住数组从第0列第0行开始,以便于计算

答案 2 :(得分:0)

return语句看起来像

return *( A + column * N_ROWS  + row );

事实上,你有一个一维数组存储N _COLUMNS * N_ROWS个元素,这些元素被分成N_ROWS个元素组。

考虑到不需要使用带参数row和column的限定符const

这些函数声明

static inline double get_element(const double *A, const int row, const int column);

static inline double get_element(const double *A, int row, int column);

是等效的,并声明相同的一个函数。