【发布时间】:2018-02-27 02:54:20
【问题描述】:
我正忙于将二维指针数组的结果拆分并保存在另一个较小的二维指针数组中。但是,我无法正常工作;只有第一行匹配。有人可以帮助我或告诉我我做错了什么吗?
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <time.h>
#include <sys/time.h>
void print_grid(bool *grid, int n, int m){
int i, j;
for (i = 0; i < n; i++){
for (j = 0; j < m; j++){
printf("%d ", (bool)*((grid+i*n) + j));
}
printf("\n");
}
}
void generate_random_values_grid(bool *grid, int n, int m){
int i, j;
for (i = 0; i<n; i++){
for (j = 0; j<m; j++){
int rndm = (rand() %2);
*((grid+i*n) + j) = rndm;
}
}
}
int main(int argc, char *argv[])
{
int n=7;
int m=5;
int num_procs = 3;
int division = 2;
bool *grid = (bool *)malloc(n*m*sizeof(bool));
srand(time(NULL));
generate_random_values_grid((bool *)grid, n, m);
print_grid((bool *)grid, n, m);
//Split
printf("----Split with division: %d ---------\n", division);
bool *division_grid = (bool *)malloc(division*m*sizeof(bool));
memcpy((bool *)division_grid, (bool *)grid, (division*m*sizeof(bool)));
print_grid((bool *)division_grid, division, m);
return 0;
}
【问题讨论】:
-
*((grid+i*n) + j) = rndm;不应该是*((grid+i*m) + j) = rndm; -
是的,没错,哈哈!感谢您的来信。
-
问题已解决。线程可以关闭大声笑。谢谢@Jean-FrançoisFabre
标签: c pointers variables multidimensional-array split