95 lines
1.7 KiB
Plaintext
Raw Normal View History

2025-11-25 16:06:53 +01:00
print("=== Pointers Demo ===");
print("");
print("--- Basic Pointer Operations ---");
x = 42;
print("x =", x);
ptr = &x;
print("ptr = &x (pointer to x)");
print("*ptr (dereferenced) =", *ptr);
print("");
print("--- Simulating Pass by Reference ---");
class RefDemo {
RefDemo(this) {
}
swap(this, a, b) {
temp = a[0];
a[0] = b[0];
b[0] = temp;
}
doubleValue(this, ref) {
ref[0] = ref[0] * 2;
}
}
demo = new RefDemo();
val1 = {10};
val2 = {20};
print("Before swap: val1 =", val1[0], ", val2 =", val2[0]);
demo.swap(val1, val2);
print("After swap: val1 =", val1[0], ", val2 =", val2[0]);
num = {50};
print("Before double:", num[0]);
demo.doubleValue(num);
print("After double:", num[0]);
print("");
print("--- Array as Reference Container ---");
data = {1, 2, 3, 4, 5};
print("Original array:");
for (i = 0; i < len(data); i++) {
print(" data[" + str(i) + "] =", data[i]);
}
class ArrayModifier {
ArrayModifier(this) {
}
multiplyAll(this, arr, factor) {
for (j = 0; j < len(arr); j++) {
arr[j] = arr[j] * factor;
}
}
}
modifier = new ArrayModifier();
modifier.multiplyAll(data, 10);
print("After multiplying by 10:");
for (i = 0; i < len(data); i++) {
print(" data[" + str(i) + "] =", data[i]);
}
print("");
print("--- Reference Wrapper Pattern ---");
class Ref {
value = null;
Ref(this, v) {
this.value = v;
}
get(this) {
return this.value;
}
set(this, v) {
this.value = v;
}
}
refInt = new Ref(42);
print("Ref value:", refInt.get());
refInt.set(100);
print("After set(100):", refInt.get());
print("");
print("All pointer tests completed");