通用二维数组
发布时间:2020-12-16 04:55:58 所属栏目:百科 来源:网络整理
导读:我想像这样创建一个二维数组: void **mdeclaraMatrice(int nrLini,int nrColoane,int sizeOfElement){ int i; void **m = malloc(nrLini * 4); if(m==NULL) return NULL; for(i=0; inrLini; i++) { *(m + (i*4)) = malloc(nrColoane * sizeOfElement); if(*
我想像这样创建一个二维数组:
void **mdeclaraMatrice(int nrLini,int nrColoane,int sizeOfElement) { int i; void **m = malloc(nrLini * 4); if(m==NULL) return NULL; for(i=0; i<nrLini; i++) { *(m + (i*4)) = malloc(nrColoane * sizeOfElement); if(*(m + (i*4)) == NULL) return NULL; } return m; } 我想这样用它: int **m = (int **)mdeclaraMatrice(n,m,sizeof(int)); 但它不起作用.我做错了什么? 解决方法
您应该使用m [i]而不是*(m i * 4)并让编译器执行算术运算.
此外,如果发生故障,您应该释放已分配的内存. 试试这个: void **mdeclaraMatrice(int nrLini,int sizeOfElement) { int i; void **m = malloc(nrLini * sizeof(void*)); if (m == NULL) return NULL; for (i=0; i<nrLini; i++) { m[i] = malloc(nrColoane * sizeOfElement); if (m[i] == NULL) { while (i-- > 0) free(m[i]); free(m); return NULL; } } return m; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |