天天看點

c語言多重指針做形參,指針--多重指針作形參(**)

今天遇到這樣一個問題:

有類似如下的結構體

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