我对理解指针有点新,所以我希望有人可以检查一下,以帮助我确定指针是如何工作的。我试图简化的指针是什么概念,以及如何使用它们从函数传递指针到函数
functA(int *numb){
functB(numb);
}
functB(int *numb){
functC(numb);
}
functC(int *numb){
*numb+=1;
}
int main(){
int testNumber = 0;
functA(&testNumber);
.
.
.
}
因此,在主,我要送testNumber的地址本功能A.所以,当我这个地址发送给functA,没有问题,对吗?
由于函数A有一个指针参数,它可以容纳一个地址,当我发送一个地址时它不会遇到问题,对吧?然后,由于麻木(在functA中)是一个指针,我可以将它发送给functB,因为functB可以接受一个地址。另外,我仍然发送与testNumber相同的地址,对吗?我发numb(从functB)到functC,在functC中,我取消了这个位置(有没有更好的方法来说这个?),并将计数增加1.所以当这个完成时,testNumber应该是1,正确吗?
我知道这可能听起来很愚蠢,但我只是想从概念上把握这一点。我花了更多的时间,而不是我愿意承认试图在我刚刚提交的一个项目上做出这个概念(我做了它,但它花了太长时间)
似乎你的代码改变'testNumber'指针的手段方式工作,并且'testNumber'的值应该是''functA(&testNumber)''后调用,如果你添加'; '在该行末尾 – VolAnd
指针对新C程序员来说总是很棘手。请记住,在*旁边,它是价值,没有它,就是地址。当你传递一个指向另一个函数的指针,并且你想传递_address_时,传递变量名而不用星号。接收函数的变量必须有一个星号。传递一个值时反之亦然(除非你希望接收函数也是一个指针)。这些规则也有例外,但是我非常怀疑你需要担心它们,除非你重写了memcpy或其他东西;) – Aurelius
@VolAnd啊谢谢你。我现在要修复 – Woff