zoukankan      html  css  js  c++  java
  • 副本机制

    1.首先说一下函数的副本机制

    看一段简单的代码

     1 # include<stdio.h>
     2 # include<stdlib.h>
     3 
     4 int add(int n, int m)
     5 {
     6     int z = n + m;
     7     return z;
     8 }
     9 
    10 int main()
    11 {
    12     printf("%d
    ", add(1, 2));
    13 }
    View Code

    当函数返回后,内存已经回收,仍能打印值,这是因为函数的副本机制

    2.结构的有副本

     1 # include<stdio.h>
     2 # include<stdlib.h>
     3 
     4 struct myStruct
     5 {
     6     int a[5];
     7     int n;
     8 };
     9 
    10 void change(struct myStruct my1)
    11 {
    12     my1.n = 0;
    13     my1.a[0] = 1000;
    14     printf("%d
    ", &my1);
    15 }
    16 
    17 int main1()
    18 {
    19     struct myStruct my1 = { { 1, 2, 3, 4, 5 }, 100 };
    20     printf("%d,%d
    ", my1.a[0], my1.n);
    21     printf("%d
    ", &my1);
    22     change(my1);
    23     printf("%d,%d
    ", my1.a[0], my1.n);
    24     system("pause");
    25 }
    View Code

    结果:(可以发现没有改变,地址不同)

    结论:

    1.除了数组没有副本机制,其他都有副本机制

    2.结构体有副本机制

    3.结构体中就算有数组,也有副本机制

    4.结构体数组,单个有副本机制

  • 相关阅读:
    洛谷P1514引水入城
    洛谷P2827蚯蚓
    外部排序总结
    桶排序
    基数排序
    计数排序
    搜索文件-读目录的使用
    堆排序
    甲乙用同一串数字玩游戏
    Cracking the Coding Interview 8.7
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/4127114.html
Copyright © 2011-2022 走看看