一个关于指针的问题(C++)
意思就是说,把穿进去的那个指针的参数给改了。于是调用这个函数的时候,你的参数通常只能是一个变量,调用完这个变量就会被改掉。
■网友
调用这个函数的时候你给的类型是关于指针的一个引用 K2
【一个关于指针的问题(C++)】 对于一个函数,你把参数传值给函数,无论怎么折腾,最后这个值还是这个值int a = 6;void func1(int x) { x = 666; } // 传值的函数void func2(int\u0026amp; x) { x = 666; } // 传引用的函数func1(a); // 执行完这一句,a 还是 6func2(a); // 执行完这一句,a 已经是 666在函数里 K1 是 K2 的左儿子,然后进行了一番翻云覆雨的旋转操作。K2 成了 K1 的右儿子,最后告诉 K2, 这个地方原来我坐着,现在给你了 ( k2 = k1; )
函数结束后,K1 已经没了,K2 指着 K1 原来指着的那个位置。
这里的 K1 就是 “事了拂衣去,深藏功与名” 啊!
■网友
对,k1在完成任务后把成果交给k2,k2带着成果走了,k1随着这个函数消亡。感觉题主应该不是不懂这个吧,是不是中间地址和变量名关系混了。画了个图,对应每一步后k1k2的状态
■网友
k1临时用来做一下旋转完成的根节点,最后还是要给k2,进来是k2, 出去还是k2, 出去了,k1就没有了
■网友
哈哈, 我以前用指针的时候也有这个困惑.(以前UWP版本 写代码会遇到神秘bug)void p_test(int * p) { // 然后你把p指向了另一个变量 } int main(){ // do something.. int * ptr=...;// do something.. p_test(ptr); /* ptr 的值并不会改变, 因为ptr储存的值是地址, 将ptr传入p_test时, 只是将ptr的值拷贝了一下, 这一点和 C++中的引用时不一样的.. 所以你在函数里面随便如何改都不会影响ptr的值(ptr指向的变量的地址), */ return 0; }
■网友
说白了就是引用的问题,k2不是一个临时变量了,而是一个引用。
推荐阅读
- 同比■同比增长7.1%!2021年的第一个节你花了多少钱?
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- 有必要重新开个C店吗
- 大学再有三个月就结束了,没学到知识,参加一个软件测试培训机构好吗
- 汽车|长安UNI-K又将开创一个新的"引力"纪元?
- 神话|武汉传奇父亲:一个平行班孩子创造的高考神话(感动上万家长)
- 王者荣耀李白能不能出肉
- 直播会成为品牌传播的另一个途径么有哪些可行的方法感觉有戏又没头绪好捉急。
- 怎样成为一名合格的Python程序员?
