hyp*_*ean 17 c memory arrays allocation dynamic-memory-allocation
我并不真正理解C中的一些基本内容,比如动态分配数组数组.我知道你可以这样做:
int **m;
Run Code Online (Sandbox Code Playgroud)
为了声明一个二维数组(随后将使用一些*alloc函数分配).也可以通过这样做"轻松"访问它*(*(m + line) + column).但是我应该如何为该数组中的元素赋值?使用gcc时,以下语句m[line][column] = 12;因分段错误而失败.
任何文章/文档将不胜感激.:-)
jpa*_*cek 34
该m[line][column] = 12语法是确定(提供line和column在范围内).
但是,您没有编写用于分配它的代码,因此很难确定它是错还是正确.它应该是符合的
m = (int**)malloc(nlines * sizeof(int*));
for(i = 0; i < nlines; i++)
m[i] = (int*)malloc(ncolumns * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
一些旁注:
您的语法m [line] [colummn]是正确的.但是为了在C中使用2D数组,必须为它分配内存.例如,此代码将为给定行和列的表分配内存.
int** AllocateArray(int line, int column) {
int** pArray = (int**)malloc(line*sizeof(int*));
for ( int i = 0; i < line; i++ ) {
pArray[i] = (int*)malloc(column*sizeof(int));
}
return pArray;
}
Run Code Online (Sandbox Code Playgroud)
注意,为了简洁起见,我省略了malloc的错误检查.真正的解决方案应该包括它们.
| 归档时间: |
|
| 查看次数: |
40566 次 |
| 最近记录: |