我希望能够创建一个二维数组,其大小与我从文件中读取的宽度和高度相同,但是当我说:
int array[0][0]
array = new int[width][height]
Run Code Online (Sandbox Code Playgroud)
Tam*_*ash 19
你应该使用指针指针:
int** array;
array = new int*[width];
for (int i = 0;i<width;i++)
array[i] = new int[height];
Run Code Online (Sandbox Code Playgroud)
当你使用它或想要调整大小时,你应该释放分配的内存,如下所示:
for (int i = 0;i<width;i++)
delete[] array[i];
delete[] array;
Run Code Online (Sandbox Code Playgroud)
要理解并能够阅读更复杂的类型,此链接可能很有用:
http://www.unixwiz.net/techtips/reading-cdecl.html
希望这有帮助.
试试这个方法:
int **array; // array is a pointer-to-pointer-to-int
array = malloc(height * sizeof(int *));
if(array == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
for(i = 0; i < height ; i++)
{
array[i] = malloc(width * sizeof(int));
if(array[i] == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
}
array = new int*[width];
if(array == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
else
{
for (int i = 0;i<width;i++)
array[i] = new int[height];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14788 次 |
| 最近记录: |