指針數組的大小是已知的。我如何分配內存到T* var[1]
?C++如何分配內存數組像T * var [1]
我想:
T* var[1];
var = new T*[count];
for(int i = 0; i < count; ++i)
var[i] = new T;
但是編譯器指出: 「不能在T **轉換成T * [1]」
指針數組的大小是已知的。我如何分配內存到T* var[1]
?C++如何分配內存數組像T * var [1]
我想:
T* var[1];
var = new T*[count];
for(int i = 0; i < count; ++i)
var[i] = new T;
但是編譯器指出: 「不能在T **轉換成T * [1]」
假設var
被宣佈爲T**
,你的代碼works perfectly fine。我強烈建議你使用std::vector
作爲:
std::vector<T> var(count);
雖然。
顯然的聲明的格式爲:
T* var[1];
這是指針的靜態分配的陣列。你將不得不使用:
var[0] = new T;
來填補它。
例如,你可以有:
constexpr int count = 3;
T* var[count];
for (int i = 0; i < count; ++i)
var[i] = new T;
T** var = new T*[count];
...
delete[] var;
當前類型(T *)[1]等於T **,但一個聰明的編譯器可能如果相應維度中有多個元素,則強加警告。
如果它是一個結構的成員,那麼只有一個指針數組,也許有些一維數組牛逼:
var[0][i]
你並不需要爲'var'分配內存。你只需要將它的唯一元素指向一個有效的'T'對象。 – juanchopanza
爲什麼不使用'std :: vector'? – Jarod42
我不能改變變量的類型..所以vector不是一個選項,變量應該是一個二維數組.. ..有n個指針指向T – roari