首页 > 代码库 > 副本机制
副本机制
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\n", add(1, 2));13 }
当函数返回后,内存已经回收,仍能打印值,这是因为函数的副本机制
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\n", &my1);15 }16 17 int main1()18 {19 struct myStruct my1 = { { 1, 2, 3, 4, 5 }, 100 };20 printf("%d,%d\n", my1.a[0], my1.n);21 printf("%d\n", &my1);22 change(my1);23 printf("%d,%d\n", my1.a[0], my1.n);24 system("pause");25 }
结果:(可以发现没有改变,地址不同)
结论:
1.除了数组没有副本机制,其他都有副本机制
2.结构体有副本机制
3.结构体中就算有数组,也有副本机制
4.结构体数组,单个有副本机制
副本机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。