C拆分指针数组并保存在新变量中

C拆分指针数组并保存在新变量中,c,pointers,variables,multidimensional-array,split,C,Pointers,Variables,Multidimensional Array,Split,我正忙于将2d指针数组的结果拆分并保存到另一个较小的2d指针数组中。然而,我不能让它工作;只有第一行匹配。有人能帮助我或告诉我我做错了什么吗 代码: 双回路都是错误的: for (i = 0; i<n; i++){ for (j = 0; j<m; j++){ int rndm = (rand() %2); *((grid+i*n) + j) = rndm; } 一些更好的方法是: 将行偏移量预计算到行指针中:b

我正忙于将2d指针数组的结果拆分并保存到另一个较小的2d指针数组中。然而,我不能让它工作;只有第一行匹配。有人能帮助我或告诉我我做错了什么吗

代码:


双回路都是错误的:

for (i = 0; i<n; i++){    
    for (j = 0; j<m; j++){
        int rndm = (rand() %2);  
        *((grid+i*n) + j) = rndm;     
    }
一些更好的方法是:

将行偏移量预计算到行指针中:bool*row=grid+i*m,然后进入循环,使用行[j]访问元素 在主例程bool grid[n][m]中使用实数可变长度数组,而不是malloc;在确定n和m之后。
*网格+i*n+j=rndm;它不应该是*grid+i*m+j=rndm;是的,没错,哈哈!谢谢你的通知。问题解决了。线程可以关闭LOL。谢谢@Jean Françoisfab
for (i = 0; i<n; i++){    
    for (j = 0; j<m; j++){
        int rndm = (rand() %2);  
        *((grid+i*n) + j) = rndm;     
    }
*((grid+i*m) + j) = rndm;