副本机制
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 } 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\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 } View Code結果:(可以發現沒有改變,地址不同)
?
結論:
1.除了數組沒有副本機制,其他都有副本機制
2.結構體有副本機制
3.結構體中就算有數組,也有副本機制
4.結構體數組,單個有副本機制
?
轉載于:https://www.cnblogs.com/sxmcACM/p/4127114.html
總結
- 上一篇: 在eclipse中指定启动时java的位
- 下一篇: AS(Autonomous System