何时传递指针以及何时传递指针的内存地址?

时间:2020-05-21 17:26:02

标签: c++ pointers

我正在看下面的代码:

  StJetEvent* jets = 0;
  jetChain->SetBranchAddress("AntiKtR060NHits12",&jets);

我们在哪里: jetChain的类别为TChainSetBranchAddress的定义是:

Int_t TChain::SetBranchAddress  (   const char *    bname, void *   add, TBranch **     ptr = 0)        

SetBranchAddress的参数内相关参数的定义为:

bname是分支的名称。 add是分支的地址。

由于某种原因,当我基于函数SetBranchAddress("AntiKtR060NHits12",&jets)的定义查看SetBranchAddress时,我认为需要传递的第二个参数是一个指针,但是地址指针jets的传递。这与第二个参数的定义是一致的,但是根据我的基本理解,我认为void * add的意思是传递一个指针,而不是传递指针的地址。

有人可以给我一些澄清吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

语法&z返回指向z的指针。术语“ X的地址”和“ X的指针”的含义几乎完全相同。

int z;
int* q = &z; // now q is a pointer to z
int** r = &q;

当我们说“ q是指向z的指针”时,意味着两件事:

  1. “ q”的类型是指向“ z”类型的指针。
  2. “ q”的值是“ z”的地址。

因此,出于相同的原因,这里的“ r”是指向“ q”的指针。

相关问题