我有一小段代码,我无法工作。 我有点新,我无法找到我做的错误。 谢谢
int main (void) { int **array; int i,j, m; scanf("%d", &m); array = malloc(sizeof(int) * (m*m)); for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { scanf("%d", &array[i][j]); } } for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { printf("%d", array[i][j]); } } return 0; }
您分配的是一个大小为m*m
的一维数组,但您正在使用它,就好像您已经分配了一个锯齿状数组,其中每行包含m
元素。
您可以分配与您所做的不同的方式
array = malloc(sizeof *array * m); if( array == NULL) { // error in malloc } for(size_t i =0; i
或者,您可以使用i
和j
以线性方式放置所有元素。
int *array; ... for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { if( scanf("%d", &array[i*m+j]) != 1){ // error in getting input. } } } ... free(array);
同样适用于printf
。
另外,请不要忘记在使用完之后free
已动态分配的内存。
以上就是c/c++开发分享打印到数组的双指针 – 保持崩溃相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562116.html