歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言中使用struct實現數組復制

C語言中使用struct實現數組復制

日期:2017/3/1 10:32:58   编辑:Linux編程

在C語言中,直接在參數中聲明數組變量是無法實現傳值傳參的,這時只會把數組的首地址傳過去。將數組放置到一個struct中進行傳參,可以實現傳值的方式。例如下面的程序:

[cpp]

  1. #include <stdio.h>
  2. struct tag {int a[100]};
  3. struct tag orange, lime, lemon;
  4. struct tag twofold(struct tag s){
  5. int i;
  6. for(i=0; i<100; i++){
  7. s.a[i] *= 2;
  8. }
  9. return s;
  10. }
  11. int main(){
  12. int i;
  13. for(i=0; i<100; i++){ orange.a[i] = 1; }
  14. lime = twofold(orange);
  15. for(i=0; i<10; i++){
  16. printf("before: lime.a[%d] = %d\n", i, lime.a[i]);
  17. }
  18. lemon = lime;
  19. for(i=0; i<100; i++){ lemon.a[i] = 7; }
  20. for(i=0; i<10; i++){
  21. printf("lemon.a[%d] = %d\n", i, lemon.a[i]);
  22. }
  23. for(i=0; i<10; i++){
  24. printf("after: lime.a[%d] = %d\n", i, lime.a[i]);
  25. }
  26. }
輸出結果:

[java]

  1. before: lime.a[0] = 2
  2. before: lime.a[1] = 2
  3. before: lime.a[2] = 2
  4. before: lime.a[3] = 2
  5. before: lime.a[4] = 2
  6. before: lime.a[5] = 2
  7. before: lime.a[6] = 2
  8. before: lime.a[7] = 2
  9. before: lime.a[8] = 2
  10. before: lime.a[9] = 2
  11. lemon.a[0] = 7
  12. lemon.a[1] = 7
  13. lemon.a[2] = 7
  14. lemon.a[3] = 7
  15. lemon.a[4] = 7
  16. lemon.a[5] = 7
  17. lemon.a[6] = 7
  18. lemon.a[7] = 7
  19. lemon.a[8] = 7
  20. lemon.a[9] = 7
  21. after: lime.a[0] = 2
  22. after: lime.a[1] = 2
  23. after: lime.a[2] = 2
  24. after: lime.a[3] = 2
  25. after: lime.a[4] = 2
  26. after: lime.a[5] = 2
  27. after: lime.a[6] = 2
  28. after: lime.a[7] = 2
  29. after: lime.a[8] = 2
  30. after: lime.a[9] = 2
Copyright © Linux教程網 All Rights Reserved