summaryrefslogtreecommitdiffstatshomepage
path: root/42_pointers4.zig
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-02-08 20:35:28 -0500
committerDave Gauer <dave@ratfactor.com>2021-02-08 20:35:28 -0500
commitcf0920de31e9b5f3c5ba6de19a1b4c8d0c58b907 (patch)
treed0c1af19e12e503a6d720b8e8ef487966e4c7d75 /42_pointers4.zig
parentadf5ddb27df7f5a22b0b7d3321dfc8bca1e7937a (diff)
Added Ex. 38-43 for pointers, updated README
Added topics beyond the language basics from ziglearn.org to the README. That's a lot of exercises. I'd like to keep it under 100, though!
Diffstat (limited to '42_pointers4.zig')
-rw-r--r--42_pointers4.zig33
1 files changed, 33 insertions, 0 deletions
diff --git a/42_pointers4.zig b/42_pointers4.zig
new file mode 100644
index 0000000..e6b8964
--- /dev/null
+++ b/42_pointers4.zig
@@ -0,0 +1,33 @@
+//
+// Now let's use pointers to do something we haven't been
+// able to do before: pass a value by reference to a function!
+//
+const std = @import("std");
+
+pub fn main() void {
+ var num: u8 = 1;
+ var more_nums = [_]u8{ 1, 1, 1, 1 };
+
+ // Let's pass a reference to num to our function and print it:
+ makeFive(&num);
+ std.debug.print("num: {}, ", .{num});
+
+
+ // Now something interesting. Let's pass a reference to a
+ // specific array value:
+ makeFive(&more_nums[2]);
+
+ // And print the array:
+ std.debug.print("more_nums: ", .{});
+ for (more_nums) |n| {
+ std.debug.print("{} ", .{n});
+ }
+
+ std.debug.print("\n", .{});
+}
+
+// This function should take a reference to a u8 value and set it
+// to 5.
+fn makeFive(x: *u8) void {
+ ??? = 5; // fix me!
+}