如何在c编程语言中使用指针算法将1维转换为2维的矩阵寻址和1 d块寻址。
任何人都可以帮助,并提前感谢:)
答案 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索引row
和col
时,在它们之间传递的公式是
index = row * (MAX_ELEMENTS_PER_ROW) + col;
和另一个方向
row = index / MAX_ELEMENTS_PER_ROW;
col = index % MAX_ELEMENTS_PER_ROW;
指针算法由指针和+
运算符上的[]
完成。
我作为家庭作业给你的实际编码; - )。