使用c语言中的算术指针将1d转换为2d矩阵

时间:2011-04-07 18:49:29

标签: c programming-languages

如何在c编程语言中使用指针算法将1维转换为2维的矩阵寻址和1 d块寻址。

任何人都可以帮助,并提前感谢:)

3 个答案:

答案 0 :(得分:1)

假设您需要一个10x15矩阵(10行,15列)来分配内存:

int numRows = 10;
int numColumns = 15;
int *matrix = malloc(sizeof(int) * numRows * numColumns);

要访问任何元素,请将所需行乘以列数并添加列号:

//access row 3, column 5:
int value = matrix(3 * numColumns + 5);

多数民众赞成。

答案 1 :(得分:0)

int** matrix = malloc(sizeof(int*) * COLUMN_SIZE);
matrix[0] = malloc(sizeof(int) * COLUMN_SIZE * ROW_SIZE);

int* temp = matrix[0];
for (int i=1; i < COLUMN_SIZE; i++)
{
    matrix[i] = temp;
    temp += ROW_SIZE;
}

现在你将在矩阵[0]中有一个线性数组,也可以使用像matrix [0] [INDEX]这样的线性索引来寻址,其中index在0和(COLUMN_SIZE * ROW_SIZE)之间,或者你可以解决它使用矩阵[COLUMN_INDEX] [ROW_INDEX]。

答案 2 :(得分:0)

当线性1d索引被称为index且2d索引rowcol时,在它们之间传递的公式是

index = row * (MAX_ELEMENTS_PER_ROW) + col;

和另一个方向

row = index / MAX_ELEMENTS_PER_ROW;
col = index % MAX_ELEMENTS_PER_ROW;

指针算法由指针和+运算符上的[]完成。

我作为家庭作业给你的实际编码; - )。