2016-12-31 45 views
0

所以我有类似的(简化的例子)功能:变更值的指针

void somefunction(structuraltype *something) { 

    something->variable = 6; 

} 

正如你所看到的,我可以用轻松访问值 - >

但我意识到,我必须使用指针而不是单个指针。
您能否向我解释在这种情况下我应该如何获得价值?

void somefunction(structuraltype **something) { 

    something???variable = 6; 

} 
+2

为什么你需要使用指针指针? –

+1

尝试:(* something) - > variable = 6; – eyllanesc

+0

没有理由说明你所显示的功能需要将指针指向指针。它也不需要简单的指针参数。将参数作为参考。 –

回答

2

这样做的等效:

void somefunction(structuraltype* something) { 
    something->variable = 6; 
} 

是这

void somefunction(structuraltype* something) { 
    (*something).variable = 6; 
} 

你可以申请,对于间接的各个层面:

void somefunction(structuraltype** something) { 
    (*(*something)).variable = 6; 
} 

间接的外部级可以随时通过->被替换为:

void somefunction(structuraltype** something) { 
    (*something)->variable = 6; 
} 

但它可能更通常使用的一个参考指针比指针指向一个指针:

void somefunction(structuraltype*& something) { 
    something->variable = 6; 
} 
+0

这也会派上用场,我会在这里回来检查每次我需要它 –

4

只需解引用所述第一指针来访问所述第二指针,然后可以使用访问该对象的成员:

void somefunction(structuraltype **something) {  
    (*something)->variable = 6;  
} 
+0

这回答技术,但它不是一个新手的好方向。你会建议一位新手司机为了节省汽油而加油吗?从技术上讲,这当然是这样的:这在技术上是一个很好的答案。 –

+0

@TheSorter:在我看来,雷米只是收获了代表点。否则,他会关心他在教你什么。 –

+1

@ Cheersandhth.-Alf你为什么要这样说?你见过他的作品吗?我认为你错了。 – 2016-12-31 01:40:52