歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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

[cpp]

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

[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