*Tによる単一要素ポインター
ちょうど1つの値を指し示します。
「*Tによる単一要素ポインター」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
ポインタが指すもの
ポインタは、値そのものを保持するのではなく、メモリ上の別の場所にある値のアドレスを保持します。📍
*T 型
単一要素ポインタの型は *T です。T は指し先の型を表します。つまり *i32 は、1つの i32 値へのポインタです。
var p: *i32 = undefined;アドレスの取得
変数の前に & 演算子を付けると、その変数へのポインタを取得できます。結果は、その値が格納されているアドレスです。
var x: i32 = 10;
const p = &x;値は1つだけ
単一要素ポインタは、配列ではなく、正確に1つの値を指すことを保証します。これをコンパイラが追跡します。
ポインタにもサイズがある
ポインタは単なるアドレスなので、そのサイズは T のサイズではなくマシンワードのサイズです。巨大な struct を指しても必要なのは1つのアドレス分だけです。
デフォルトでは変更可能
通常の *T では、指し先の値を読み取ることも書き換えることもできます。後ほど const を追加して読み取り専用にします。
var n: i32 = 1;
const p: *i32 = &n;ポインタはコピーせず共有する
関数にポインタを渡すと元の値を共有するため、ポインタを通して行った変更が呼び出し元にも見えるようになります。
fn bump(p: *i32) void {
p.* += 1;
}const のアドレス
const の x に対して &x を取得すると *const i32 になります。Zig は変更不可のデータへのポインタを通して書き込むことを許可しないためです。
const x: i32 = 5;
const p = &x;ポインタが null になることはない
通常の Zig ポインタが null になることは決してありません。値が存在しない可能性がある場合は、?*T のような optional pointer を使う必要があります。
型推論の助け
const p = &x と記述すると、Zig は x からポインタ型を推論します。そのため、*i32 を手動で書く必要はほとんどありません。
var score: u8 = 42;
const p = &score;ポインタを使う理由
ポインタを使うと値をその場で変更でき、大きなデータのコピーを避けられます。これは Zig の明示的な低レベル制御の中心となる考え方です。
クイックチェック
関数から呼び出し元の変数を変更したい場合、パラメータはどの型にすべきですか?
まとめ
単一要素ポインタ *T は、正確に1つの値のアドレスを保持します。& で取得でき、null にはならず、コピーせずにデータを共有できます。🎯
よくある質問
「*Tによる単一要素ポインター」レッスンは無料ですか?
はい。「*Tによる単一要素ポインター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「*Tによる単一要素ポインター」で何を学びますか?
ちょうど1つの値を指し示します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「*Tによる単一要素ポインター」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- *Tによる単一要素ポインター
- ptr.*でデリファレンスする
- [*]Tによる複数要素ポインター
- constポインターとアラインメント