c/c++语言开发共享将指针从function传递到function

我对理解指针有点新意,所以我希望有人可以检查一下,以帮助我确保我对指针的工作原理有了正确的认识。 我正在尝试简化指针是什么以及如何使用它们的想法

functA(int *numb){ functB(numb); } functB(int *numb){ functC(numb); } functC(int *numb){ *numb+=1; } int main (){ int testNumber = 0; functA(&testNumber); . . . } 

所以在main中,我发送testNumber的地址到functionA.所以当我将这个地址发送到functA时,没有问题,对吗?

functionA有一个可以保存地址的指针参数,当我发送地址时它不会遇到问题,对吧? 然后,由于麻木(在functA中)是指针,我可以将它发送到functB,因为functB可以接受一个地址。 另外,我仍然发送testNumber所在的地址,对吗?

再次,我发送麻木(从functB)到functC和functC,我正在derefencing这个位置(有更好的方式说这个?)并将计数增加1.所以当这样做时,testNumber应该是1,正确?

我知道这可能听起来很愚蠢,但我只是想从概念上把握这个。 我花了更多的时间,而不是我愿意承认试图在我刚刚提交的项目中实现这个概念(我做了,但是花了太长时间)

    变量存储在存储器中的某个位置,并且存储有一个值。 每个地点都有地址。

    variable

    location_value

    location_address

    指针(例如, int *p )只是一个变量,就像其他变量一样(例如, int a; )。 差异是指针存储某个位置的地址(您已经知道)。

    variable: int testNumber = 10;

    location_value: 10

    location_address: 0xABCD000 // <-- 'testNumber' is stored at this location

    ----------------------------

    variable: int *numb = &testNumber;

    location_value: 0xABCD000 // <-- note: value of 'numb' is an address, address of 'testNumber'

    location_address: 0x1234000 // <-- numb itself is stored at 0x12340000

    因为, numb是一个变量,你可以继续将其值赋给同一类型的其他变量。

    在你的情况下, functC::numb = functB::numb = functA::numb = &testNumber = 0xABCD000 。 哪个是对的。

    因此,当您取消引用*functC::numb您正在访问存储在地址functC::numb的变量,该变量恰好是testNumber 。 所以当你做*functC::numb += 1;时, testNumber会增加*functC::numb += 1;

    这篇文章中的问题太多了。 只要你提到正确的地址,你就会很开心。 但是这里有太多的指针可能会导致一些错误,请小心。

    所以当我将此地址发送到functA时,没有问题,对吗?

    functionA有一个可以保存地址的指针参数,当我发送地址时它不会遇到问题,对吧?

    另外,我仍然发送testNumber所在的地址,对吗?

    …..有没有更好的方式来说这个?)

    不,是的,这取决于要求。

    所以当这个完成时,testNumber应该是1,对吗?

      以上就是c/c++开发分享将指针从function传递到function相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519811.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐