使用指针在数组中查找值

Finding value in array using pointer

本文关键字:查找 数组 指针      更新时间:2023-10-16

对于计算机科学课,我有以下作业。

给定一个包含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);

有人能帮我吗?

据我所知,假设基于零的索引,通过使用指针算术可以获得如下所需的结果。

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

这里不需要使用sizeof(double),因为A是适当类型的。与之相加将使sizeof(double)前进到被加数的3倍。

尝试A+column_number*column_size+row_number

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

返回语句看起来像

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

实际上,您有一个存储N个_COLUMNS * N_ROWS元素的一维数组,这些元素被拆分为N_ROWS元素组。

考虑到没有必要将限定符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);

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