数组是二等公民,不能进行整体赋值,或者参数传递,或者作为返回值。
But!如果封装在struct内部,就完全不一样了
1 #include <iostream> 2 using namespace std; 3 4 struct s_tag { int a[100]; }; 5 s_tag fa, sa, ua; 6 s_tag multiple(s_tag s) { 7 int j; 8 for(j = 0; j < 100; j++) 9 s.a[j] *= 2; 10 return s; 11 } 12 13 int main() { 14 for(int i = 0; i < 100; i++) fa.a[i] = i; 15 for(int i = 0; i < 100; i++) cout << fa.a[i] << " "; 16 sa = multiple(fa); 17 cout << endl; 18 for(int i = 0; i < 100; i++) cout << sa.a[i] << " "; 19 ua = sa; 20 cout << endl; 21 for(int i = 0; i < 100; i++) cout << ua.a[i] << " "; 22 23 return 0; 24 }
输出:
$ ./a.exe 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 186 188 190 192 194 196 198 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 186 188 190 192 194 196 198