我感到困惑如何分配指針的「2D陣列」。C++ 2D指針數組
有了一些嘗試我已成功地分配東西,這似乎是工作,但我不知道爲什麼,這樣的解釋將是巨大的。
這是我的全部代碼:
#include <iostream>
using namespace std;
int main() {
int *** ptr = (int ***)malloc(sizeof(int)* 100*100);
for (int i = 0; i < 100; ++i)
{
ptr[i] = (int**)malloc(sizeof(int) * 100);
for (int j = 0; j < 100; ++j)
ptr[i][j] = (int*)malloc(sizeof(int) * 100);
}
cout << *ptr[20][20] << endl;
cout << *ptr[99][20] << endl;
}
好,他們打印出的「垃圾值」,但它似乎不像我曾嘗試其他的東西好。
所以,如果我不misteaken這應該是等同於數組[100] [100]。
我questin就是爲什麼每個指針的「級別」必須有大小。
在這一行:
for (int j = 0; j < 100; ++j)
ptr[i][j] = (int*)malloc(sizeof(int) * 100);
}
它看起來對我來說,我們正在每個二維數組的協調(我知道這是不是因爲二維數組一樣)可以容納100個整數的大小,我只想保存一個整數。
,但如果我刪除它像這樣
for (int j = 0; j < 100; ++j)
ptr[i][j] = (int*)malloc(sizeof(int));
}
然後我的程序停止工作。爲什麼?
你爲什麼要使用malloc在C++程序?爲什麼你只是不使用矢量? –
因爲我來自Java,我聽說的第一件事是malloc。這不好嗎? – gilley
「這不好嗎?」是的,如果你來自Java,你可能也聽說過'new'。您可能還想了解C++和Java差不多完全不同的語言,爲了學習C++,您需要一本好的教科書。 –