我正在看下面的代码:
StJetEvent* jets = 0;
jetChain->SetBranchAddress("AntiKtR060NHits12",&jets);
我们在哪里:
jetChain
的类别为TChain
而SetBranchAddress
的定义是:
Int_t TChain::SetBranchAddress ( const char * bname, void * add, TBranch ** ptr = 0)
SetBranchAddress
的参数内相关参数的定义为:
bname是分支的名称。 add是分支的地址。
由于某种原因,当我基于函数SetBranchAddress("AntiKtR060NHits12",&jets)
的定义查看SetBranchAddress
时,我认为需要传递的第二个参数是一个指针,但是地址指针jets
的传递。这与第二个参数的定义是一致的,但是根据我的基本理解,我认为void * add
的意思是传递一个指针,而不是传递指针的地址。
有人可以给我一些澄清吗?非常感谢!
答案 0 :(得分:1)
语法&z
返回指向z
的指针。术语“ X的地址”和“ X的指针”的含义几乎完全相同。
int z;
int* q = &z; // now q is a pointer to z
int** r = &q;
当我们说“ q是指向z的指针”时,意味着两件事:
因此,出于相同的原因,这里的“ r”是指向“ q”的指针。