zoukankan      html  css  js  c++  java
  • C语言参数传递

     1 //--------------------单向值传递------------------------
     2 
     3 // swap这个方法在被调用时,给形参a,b分配了空间
     4 // 主调函数将【数值】传递给【形参】
     5 // 形参完成操作之后并不能将值传回给主调函数
     6 // 形参的生命周期仅仅在方法体中
     7 /* void swap(int a , int b)
     8     {
     9         int tmp = a;
    10         a = b;
    11         b = tmp;
    12     }*/
    13 //-----------------------验证程序------------------------
    14 /*    
    15     int x(6) , y(7);
    16     cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
    17     cout << "交换值以前的值:x=" << x << "y=" << y << endl;
    18     swap(x , y);
    19     cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
    20     cout << "交换值以后的值:x=" << x << "y=" << y << endl;
    21 */
    22 //-------------------------------------------------------
    23 
    24 //--------------------单向值(指针)传递------------------------
    25 // 同值传递是一个道理
    26 // 传进来的指针变量被形参接收
    27 // 形参在执行完方法之后无法传回主调函数中
    28 //void swap(int *a , int *b)
    29 //{
    30 //    int *tmp = a;
    31 //    a = b;
    32 //    b = tmp;
    33 //}
    34 //-----------------------验证程序------------------------
    35 /*    
    36     int x(6) , y(7);
    37     cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
    38     cout << "交换值以前的值:x=" << x << "y=" << y << endl;
    39     swap(&x , &y);
    40     cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
    41     cout << "交换值以后的值:x=" << x << "y=" << y << endl;
    42 */
    43 //-------------------------------------------------------
    44 
    45 //--------------------地 址 传 递------------------------
    46 
    47 // 形参接收到了主调函数传递的参数
    48 // 形参a将主调函数传递过来的【指针变量】指向的【内存地址】的【数值】赋予被调函数中的临时变量tmp
    49 // 形参b将【指针变量】指向的【内存空间】中的【数值】赋予形参a存储的【指针变量】指向的【内存空间】
    50 // 临时变量tmp将【数值】赋予形参b存储的【指针变量】指向的【内存空间】
    51 // 因为是【直接】对【指针变量】指向的【内存空间】中的【数值】进行修改,所以达到了所谓的双向传值
    52 //void swap(int *a , int *b)
    53 //{
    54 //    int tmp = *a;
    55 //    *a = *b;
    56 //    *b = tmp;
    57 //}
    58 //-----------------------验证程序------------------------
    59 /*    
    60     int x(6) , y(7);
    61     cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
    62     cout << "交换值以前的值:x=" << x << "y=" << y << endl;
    63     swap(&x , &y);
    64     cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
    65     cout << "交换值以后的值:x=" << x << "y=" << y << endl;
    66 */
    67 //-------------------------------------------------------
    68 
    69 //---------------动态分配内存空间实现值交换----------------
    70 // 定义俩指针变量x,y
    71 // 分别对他们进行动态分配内存空间
    72 // x , y 仅为1字节的指针变量,指向了两个分配好的空间上
    73 // 将x,y的值进行互换者达到了交换值的效果
    74 /*
    75 int* x ,* y;
    76 
    77 x = (int*)malloc(sizeof(int));
    78 y = (int*)malloc(sizeof(int));
    79 
    80 *x = 6;
    81 *y = 7;
    82 
    83 cout << "交换值以前的地址:x=" << x << "y=" << y << endl;
    84 cout << "交换值以前的值:x=" << *x << "y=" << *y << endl;
    85 
    86 int *tmp;
    87 tmp = x;
    88 x = y;
    89 y = tmp;
    90 
    91 cout << "交换值以后的地址:x=" << x << "y=" << y << endl;
    92 cout << "交换值以后的值:x=" << *x << "y=" << *y << endl;
    93 */

    还有一点没弄明白就是如下代码在【静态分配内存】的时候为什么不能用改变【内存空间】的【地址】来达到【数值】交换的效果???!!!

    看官有和妙解请不吝赐教..

     1 //--------------------单向值(指针)传递------------------------
     2 // 同值传递是一个道理
     3 // 传进来的指针变量被形参接收
     4 // 形参在执行完方法之后无法传回主调函数中
     5 //void swap(int *a , int *b)
     6 //{
     7 //    int *tmp = a;
     8 //    a = b;
     9 //    b = tmp;
    10 //}
    11 //-----------------------验证程序------------------------
    12 /*    
    13     int x(6) , y(7);
    14     cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
    15     cout << "交换值以前的值:x=" << x << "y=" << y << endl;
    16     swap(&x , &y);
    17     cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
    18     cout << "交换值以后的值:x=" << x << "y=" << y << endl;
    19 */
    20 //-------------------------------------------------------
  • 相关阅读:
    day05 Python
    重新理解apache解析漏洞
    PhpAdmin安装报错, php syntax error, unexpected T_STRING on line 8
    一键配置Visual Studio Code( 1.57.1)开发java
    apt-get upgarde 和dist-upgrade的差别
    解决 Python2 报错 LookupError: unknown encoding: cp65001
    文件上传漏洞随手感想
    161端口SNMP敏感信息泄露漏洞
    使用电模拟器导出微信小程序包(wxapkg)
    kali安装docker
  • 原文地址:https://www.cnblogs.com/H-Col/p/3704427.html
Copyright © 2011-2022 走看看