From 55ad7c32f2d534b1fbd438204d21738f958c51a5 Mon Sep 17 00:00:00 2001 From: Dave Gauer Date: Tue, 9 Feb 2021 18:36:57 -0500 Subject: Moved exercises to exercises because exercises --- 43_pointers5.zig | 84 -------------------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 43_pointers5.zig (limited to '43_pointers5.zig') diff --git a/43_pointers5.zig b/43_pointers5.zig deleted file mode 100644 index adfaea1..0000000 --- a/43_pointers5.zig +++ /dev/null @@ -1,84 +0,0 @@ -// -// Passing integer pointers around is generally not something you're going -// to do. Integers are cheap to copy. -// -// But you know what IS useful? Pointers to structs: -// -// const Vertex = struct{ x: u32, y: u32, z: u32 }; -// -// var v1 = Vertex{ .x=3, .y=2, .z=5 }; -// -// var pv: *Vertex = &v1; // <-- a pointer to our struct -// -// Note that you don't need to dereference the "pv" pointer to access -// the struct's fields: -// -// YES: pv.x -// NO: pv.*.x -// -// We can write functions that take pointer arguments: -// -// fn foo(v: *Vertex) void { -// v.x += 2; -// v.y += 3; -// v.z += 7; -// } -// -// And pass references to them: -// -// foo(&v1); -// -// -// Let's revisit our RPG example and make a printCharacter() function -// that takes a Character pointer. -// -const std = @import("std"); - -const Class = enum{ - wizard, - thief, - bard, - warrior, -}; - -const Character = struct{ - class: Class, - gold: u32, - health: u8, - experience: u32, -}; - -pub fn main() void { - var glorp = Character{ - .class = Class.wizard, - .gold = 10, - .health = 100, - .experience = 20, - }; - - // FIX ME! - // Please pass our Character "glorp" to printCharacter(): - printCharacter( ??? ); -} - - -// Note how this function's "c" parameter is a pointer to a Character struct. -fn printCharacter(c: *Character) void { - - // Here's something you haven't seen before: when switching an enum, you - // don't have to write the full enum name. Zig understands that ".wizard" - // means "Class.wizard" when we switch on a Class enum value: - const class_name = switch (c.class) { - .wizard => "Wizard", - .thief => "Thief", - .bard => "Bard", - .warrior => "Warrior", - }; - - std.debug.print("{s} (G:{} H:{} XP:{})", .{ - class_name, - c.gold, - c.health, - c.experience, - }); -} -- cgit v1.2.3-ZIG