zoukankan      html  css  js  c++  java
  • 函数参数的传值和传址

    函数调用参数传值和传址的区别:

    传值:把参数拷贝一个副本,然后传递给函数体进行操作。但是对参数的操作不会影响到函数外的参数,范围仅在当前的函数内有效。

    1 void compare(int a, int b)//两个参数大小的比较

    传址:把参数的地址传给函数,在函数体内对参数进行操作,会影响到函数外的参数(也就是会影响参数本身)。

    1 void copy(int *des, int sou)//将参数sou拷贝到参数des中

    举例:

     1 typedef struct Node
     2 {
     3     ElemType data;
     4     struct Node *next;
     5 }Node;
     6 
     7 typedef struct Node *LinkList;
     8 
     9 /*
    10  * Init the List.
    11  */
    12 void InitList(LinkList *L);
    13 
    14 /*
    15  * Insert the element e at the i-th position of
    16  * the List. if successful, return 1. Otherwise,
    17  * return 0. 
    18  */
    19 Status ListInsert(LinkList L, int i, ElemType e);

    在初始化链表的时候,用到了双重指针,因为涉及到改变参数L;但是在进行链表插入时,没有使用双重指针,因为此时不需要更改指针L的指向,但是在插入函数内,

    L指针所指向的指针修改后可以被保存。如下代码所示:

     1 Status ListInsert(LinkList L, int i, ElemType e)
     2 {
     3     int j = 0;
     4     LinkList s, p = L;
     5 
     6     while (p && j < i - 1)
     7     {
     8         j++;
     9         p = p->next;
    10     }
    11 
    12     if (!p || j > i - 1)
    13     {
    14         return ERROR;
    15     }
    16     s = (LinkList)malloc(sizeof(LNode));
    17     s->data = e;
    18     s->next = p->next;
    19     p->next = s;//此处就是L指向的指针被改变后,可以被保存
    20     return OK;
    21 }
    以上内容仅代表个人理解,如有不适之处,还望不吝赐教!
  • 相关阅读:
    数据库与数据仓库的比较Hbase——Hive
    log4j 配置使用
    hadoop Datanode Uuid unassigned
    kafka相关文章引用
    kafka可靠性
    kafka基本原理
    html
    并发编程
    Python之系统交互(subprocess)
    网络编程
  • 原文地址:https://www.cnblogs.com/wojiaowoen/p/6763215.html
Copyright © 2011-2022 走看看