Funktionen definierst du mit fn; Parametertypen und Rückgabetyp sind Pflicht. pub macht sie nach außen sichtbar. Argumente werden unveränderlich übergeben: Eine Funktion kann Parameter nicht ändern. Willst du etwas ändern, übergibst du einen Zeiger (*i32).
Größere Daten übergibst du per Zeiger oder Slice, damit nichts kopiert wird.
const std = @import("std");
fn quadrat(x: i32) i32 {
return x * x;
}
fn verdopple(x: *i32) void {
x.* *= 2; // .* greift auf den Wert hinter dem Zeiger zu
}
pub fn main() void {
std.debug.print("{d}\n", .{quadrat(7)}); // 49
var n: i32 = 21;
verdopple(&n);
std.debug.print("{d}\n", .{n}); // 42
}Merke
- Parameter sind unveränderlich
*i32ist ein Zeiger,x.*der Wert dahinter&nerzeugt einen Zeiger
Aufgabe
Schreibe `tausche(a: *i32, b: *i32)`.