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 | #include <stdio.h> typedef struct { float aValue; int anArray[5]; } myStruct; myStruct addValueToArray(myStruct in) { myStruct out = in; int i; for (i = 0; i < 5; i++) { out.anArray[i] = in.anArray[i] + in.aValue; } return out; } int main (void) { myStruct a = {.aValue = 3, .anArray = {1, 2, 3, 4, 5}}; myStruct b = addValueToArray(a); printf("%f, ", b.aValue); int i; for (i = 0; i < 5; i++) { printf("%d, ", b.anArray[i]); } return 0; } |
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBmbG9hdCBhVmFsdWU7CiAgICBpbnQgYW5BcnJheVs1XTsKfSBteVN0cnVjdDsKCm15U3RydWN0IGFkZFZhbHVlVG9BcnJheShteVN0cnVjdCBpbikKewogICAgbXlTdHJ1Y3Qgb3V0ID0gaW47CiAgICAKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykKICAgIHsKICAgICAgICBvdXQuYW5BcnJheVtpXSA9IGluLmFuQXJyYXlbaV0gKyBpbi5hVmFsdWU7CiAgICB9CgogICAgcmV0dXJuIG91dDsKfQoKaW50IG1haW4gKHZvaWQpCnsKICAgIG15U3RydWN0IGEgPSB7LmFWYWx1ZSA9IDMsIC5hbkFycmF5ID0gezEsIDIsIDMsIDQsIDV9fTsKICAgIAogICAgbXlTdHJ1Y3QgYiA9IGFkZFZhbHVlVG9BcnJheShhKTsKICAgIAogICAgcHJpbnRmKCIlZiwgIiwgYi5hVmFsdWUpOwogICAgCiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZCwgIiwgYi5hbkFycmF5W2ldKTsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0K
-
upload with new input
-
result: Success time: 0.01s memory: 1720 kB returned value: 0
3.000000, 4, 5, 6, 7, 8,
Passing and returning structures (with array members) by value (http://stackoverflow.com/q/13383224)


