今天遇到這樣一個問題:
有類似如下的結構體
struct everythingtest
{
int a;
double b,c,d;
};
主函數中已經定義了該類型的一個指針,現需要在函數中生成everythingtest類型的數組,以儲存、修改相關資料。但是之後需要将該數組傳回,以作他用。
其實通過傳回值的方法很容易實作,但是怎樣在不通過傳回值的方式實作這個功能呢?
查資料之後發現需要用到二重指針。
主函數:
everythingtest *point;// 指針變量
in(&point,15);// 15 :重新配置設定的數組長度
cout<
in函數:
void in(everythingtest**p,int n){
*p = new everythingtest[n];// 配置設定空間 大小為 n
(*p)[10].a = 10086; // 指派
}
個人了解:
**p 其實表示p中存儲的是某個位址的位址,*p就表示取出p中的最外層位址,本題中,*p的值就是新配置設定的數組的位址,要想取具體某個節點的某個值,就需要在*p的位址上+n個結構體的長度
如上的 (*p)[10].a = 10086 表示對*p 的第十個節點的a内容指派。
*point 表示point中存儲的是指向具體對象的位址, &point 表示取point變量的位址,将&poin傳入in(),也就表示 将 某位址的位址傳入in()。
參考:http://www.cppblog.com/doing5552/archive/2010/09/28/127994.html
标簽:函數,point,--,位址,作形,數組,everythingtest,指針
來源: https://www.cnblogs.com/study-space/p/14716092.html