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 }