struct A { int a; }; int intFunction() { return 1; } bool boolFunction() { return true; } float floatFunction() { return 2.0; } int* intFunction(int* i) { return i; } bool* boolFunction(bool* b) { return b; } float* floatFunction(float* f) { return f; } A* structFunction(A* a) { return a; } void main() { int i = intFunction(); print i; bool b = boolFunction(); print b; float f = floatFunction(); print f; print *intFunction(&i); print *boolFunction(&b); print *floatFunction(&f); print intFunction(&i)[0]; print boolFunction(&b)[0]; print floatFunction(&f)[0]; A a; a.a = 53453; print structFunction(&a)->a; structFunction(&a)->a = 123443; structFunction(&a)[0].a += 3; (*structFunction(&a)).a += 1; (&a)->a += 4; (*(&a)).a += 5; print structFunction(&a)->a; }