百科问答小站 logo
百科问答小站 font logo



你能否在不传递指针的情况下通过函数交换两个变量的值,如果可以请说明方法,如果不行请分析原因。?计算机? 第1页

  

user avatar   haozhi-yang-41 网友的相关建议: 
      

玩点花样:

       static intptr_t b1 = 0; static intptr_t b2 = 0;  void calc_impl() { #define v1 *(int*)(b1 - (intptr_t)&tmp) #define v2 *(int*)(b2 - (intptr_t)&tmp)      int tmp = v1;      v1 = v2;     v2 = tmp; }  void calc() {     int a = 2;     int b = 3;     b1 = (intptr_t)&a + b2;     b2 += (intptr_t)&b;     calc_impl(); }  void swap() {     int base = 0;     b2 = (intptr_t)&base;     calc(); }  void test_swap() {     int a = 10;     int b = 5;     printf("%d %d
", a, b);      swap(); // do not need any pointer here      printf("%d %d
", a, b); }     

没有什么高深的代码,但原理不太容易一下子想明白。


user avatar   zhao-hong-xin-17 网友的相关建议: 
      

从道理来说,早减晚增本身是没啥毛病的,毕竟只是个选项,丰俭由人。

大家怕的是某些人通过这些选项,再加点私货。而且这个说法和推迟退休一起出来,由不得大家多想。

按照目前的舆论情况,如果你敢允许早退减拿,估计只要不在体制内的人就统统早退了,反正也没啥规定领了社保就不能接着打工,对吧?甚至还可以把原来交给社保的那块放自己口袋。

所以,让你早退减拿是不可能的,忽悠大家晚退多拿的可能性比较大。




  

相关话题

  如果一门编程语言中不允许对象(或结构体)循环引用,那么用它实现什么功能会比较困难? 
  为何 Linux 的系统 API 相比 Win32 到处是缩写?有何优劣? 造成两者差别的原因是什么? 
  C++中this指针什么情况下是必须要用的? 
  在开区间上无界的连续函数一定不一致连续吗? 
  编译器在遇到指向基类的指针时都会进行动态联编吗? 
  请问这两个在表达方式上很相似的结论是否有相通的地方(感觉他们证明方法也很像)? 
  指向指针的指针的指针的指针是什么?指向指针的指针的指针的指针是什么? 
  是否存在无理点不连续、有理点连续的函数? 
  p是char类型指针,p[1]不是指向p[0]的下一个字节吗?为什么会到0x11? 
  函数方程 f(xy)=f(x)+f(y) 的严格解是什么?解是否唯一? 

前一个讨论
历史上发生过什么“为山九仞、功亏一篑”就差一步的事儿?
下一个讨论
王思聪大众点评账号被别人改绑手机号码,质疑美团系统安全,这是怎么回事?为什么会被别人改绑?





© 2024-09-20 - tinynew.org. All Rights Reserved.
© 2024-09-20 - tinynew.org. 保留所有权利