這可能很簡單,但我很難理解它。瞭解C++代碼'新'和指針
代碼的摘錄,我想了解:
SomeStruct ***namestruct = new SomeStruct **[intVariable];
//Three level pointer and... two level pointer?
//or product and pointer?
for(int i=0; i < intVariable; i++)
namestruct[i] = new SomeStruct *[2]; //creates the same structure time 2?
for(int i=0; i < intVariable; i++) { // just initialization of a
namestruct[i][0] = NULL; // matrix like structure?
namestruct[i][1] = NULL;
}
代碼工作,但我需要理解爲什麼程序員做了什麼,它的完成。
如何從通過函數作爲地址傳遞的結構的另一個實例分配地址?例如:
void function(SomeStruct **othername);
int main()
{
SomeStruct *othername;
function(&othername);
return 0;
}
void function(SomeStruct **othername)
{
SomeStruct ***namestruct = new SomeStruct **[intVariable];
for(int i=0; i < intVariable; i++)
namestruct[i] = new SomeStruct *[2];
for(int i=0; i < intVariable; i++) {
namestruct[i][0] = NULL;
namestruct[i][1] = NULL;
}
// This is what I want to do
...
namestruct[x][0] = &othername[i]; // Error cannot convert SomeStruct**
// to SomeStruct* in assignment
...
}
感謝您的幫助!問題出現在代碼本身以及將otherstruct
的地址分配給namestruct
的方法中。
有沒有'在C. new'操作這是C++。 –
有沒有這樣的事情,「C代碼與'新'」(除非有人在玩一些真正壞的玩笑,並且#把new關鍵字定義爲一個邪惡的宏)。這是C++。 – 2014-01-26 23:29:21
哦,我會更新標題和標籤!順便說一句,謝謝!我本來應該是ANSI-C,先是誤解了。 – mrei